2015-05-08 21 views
1

我有这个随机字符串。我只需要字符串,如mcnb8h1apihg9ffav1ubtgal77内特定的文本,并Sat, 09-May-2015 11:49:58 GMT提取标头中的cookies数据

$str = 'HTTP/1.1 302 Moved Temporarily Date: Fri, 08 May 2015 11:49:58 GMT Server: Apache/2.2.22 (Debian) X-Powered-By: PHP/5.5.23-1~dotdeb.1 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: OSTSESSID=mcnb8h1apihg9ffav1ubtgal77; expires=Sat, 09-May-2015 11:49:58 GMT; Max-Age=86400; path=/support/; domain=myweb.com; secure Location: index.php Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 HTTP/1.1 200 OK Date: Fri, 08 May 2015 11:49:58 GMT Server: Apache/2.2.22 (Debian) X-Powered-By: PHP/5.5.23-1~dotdeb.1 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: OSTSESSID=sugrlug6sj8m27lrkv5id9v473; expires=Sat, 09-May-2015 11:49:58 GMT; Max-Age=86400; path=/support/; domain=myweb.com; secure Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8'; 

此字符串是完全随机的。我试图解决它:

$pattern = "#OSTSESSID=(.*); expires=(.*)\n#"; 
preg_match_all($pattern, $str, $matches); 

print_r($matches); 

但没有奏效。请帮我解决这个问题。

+0

有什么理由'$ _COOKIE [ 'OSTSESSID']'是行不通的? – Machavity

回答

1

您应该可能read up on Regex和您可以使用的各种运营商。

并使用https://regex101.com/作为排除故障的好地方。

您还没有提供关于您的数据的很多信息,是OSTSESSID每次都是一样的长度,总是小写字母数字?

如果我们假设的话,那么这里有一个提示/半答案:

$pattern = "/OSTSESSID=([a-z0-9]{26});/"; 

希望这将有助于你的休息。

1

它不工作的一大原因是,你得到的贪婪匹配。*的

它试图匹配尽可能多的字符可能。在明星之后投掷一个问号使其不合格:

OSTSESSID =(。?);期满=; (I也终止了到期位用分号 ,只是相匹配的片段(。):

OSTSESSID = mcnb8h1apihg9ffav1ubtgal77;期满=星期六,09可能 - 2015 11点49分58秒格林尼治标准时间; 和 OSTSESSID = sugrlug6sj8m27lrkv5id9v473;到期=周六,09月2015年11时49分58秒格林尼治标准时间;