从字符串中提取PHPSESSID值的Regex模式

从字符串中提取PHPSESSID值的Regex模式,php,regex,preg-match,sessionid,Php,Regex,Preg Match,Sessionid,我对preg\u match()有一些问题。 我使用了这个代码(过去它工作得很好): 但现在它不工作了。(返回一个空数组) 我的主题:HTTP/1.1 302临时移动服务器:nginx/1.8.0日期:2017年5月24日星期三08:58:57 GMT内容类型:文本/html传输编码:分块连接:保持活动X-Powered-By:PHP/5.3.10-1ubuntu3.18 Set Cookie:PHPSESSID=jrq8446q91fv6eme2ois3lpl07;expires=2018年5

我对
preg\u match()
有一些问题。 我使用了这个代码(过去它工作得很好):

但现在它不工作了。(返回一个空数组)

我的主题:
HTTP/1.1 302临时移动服务器:nginx/1.8.0日期:2017年5月24日星期三08:58:57 GMT内容类型:文本/html传输编码:分块连接:保持活动X-Powered-By:PHP/5.3.10-1ubuntu3.18 Set Cookie:PHPSESSID=jrq8446q91fv6eme2ois3lpl07;expires=2018年5月24日星期四08:58:57 GMT;路径=/;Expires:Thu,1981年11月19日08:52:00 GMT Pragma:无缓存控制:无存储,无缓存,必须重新验证位置:index.php
*

我需要获取PHPSESSID值:
jrq8446q91fv6eme2ois3lpl07

谢谢你的回答。

怎么样

$sessionid=session_id()


/Lasse

是否尝试不分组?使用(*)so:


给定OP的输入字符串

OP的模式有效(131步)

目前公认的答案是不正确的,这肯定会让未来的读者感到困惑

但是,让我们确保您使用的是最有效、最简短、最好的模式

/PHPSESSID=\K[a-z\d]*/  #no capture group, 23 steps (accurate for sample input)
/PHPSESSID=\K[^;]*/     #no capture group, 23 steps (accurate for sample input)
/PHPSESSID=\K\w*/       #no capture group, 23 steps (not inaccurate, includes underscores)
如果希望将
\r
\n
作为PHPSESSID值的可能分隔符,则可以将这些字符添加到“否定字符类”中,如下所示:
[^;\r\n]
(它仍将在23个步骤中运行)

输入:

$subject='HTTP/1.1 302 Moved Temporarily Server: nginx/1.8.0 Date: Wed, 24 May 2017 08:58:57 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.3.10-1ubuntu3.18 Set-Cookie: PHPSESSID=jrq8446q91fv6eme2ois3lpl07; expires=Thu, 24-May-2018 08:58:57 GMT; path=/; Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Cache-Control: no-store, no-cache, must-revalidate Location: index.php
*';
一行方法():

输出:

jrq8446q91fv6eme2ois3lpl07

请注意,通过使用
\K
无需使用捕获组,这将使输出阵列大小减少50%。我希望这些最佳实践能教育未来的读者。

“不再”是什么意思?你改变了什么?这个主题来自另一个网站,所以这是行不通的。很好,拉西的解决方案更好。只有在没有其他选项可用的情况下,才可将此选项用于解析完整的标题。
$subject='HTTP/1.1 302 Moved Temporarily Server: nginx/1.8.0 Date: Wed, 24 May 2017 08:58:57 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PHP/5.3.10-1ubuntu3.18 Set-Cookie: PHPSESSID=jrq8446q91fv6eme2ois3lpl07; expires=Thu, 24-May-2018 08:58:57 GMT; path=/; Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Cache-Control: no-store, no-cache, must-revalidate Location: index.php
*';
echo preg_match('/PHPSESSID=\K[^;\r\n]*/',$subject,$out)?$out[0]:'';
jrq8446q91fv6eme2ois3lpl07