检索Cookie值的一部分并存储在变量中

时间:2012-03-29 06:25:13

标签: php cookies string-parsing

我有一个ASP.NET登录应用程序。 登录成功后,我的应用程序会创建一个Cookie。

创建时,我的cookie类似于:

Name: LoginCookie

Value: guid=3eb8d82d-bc83-4ab9-b12b-880f84404a1d&login=true

我的问题是,使用PHP,如何检索'guid'值并将其存储在变量中?

非常感谢任何指示。

2 个答案:

答案 0 :(得分:2)

使用parse_str()

parse_str($_COOKIE['LoginCookie'], $cookie);

// now 'guid' and 'login' are available in the array $cookie:
echo var_export($cookie, 1), PHP_EOL;    

echo $cookie['guid'];

答案 1 :(得分:1)

你可以用正则表达式给出一个镜头:

$cookieValue = $_COOKIE['LoginCookie'];
preg_match('#guid=([\-a-f0-9]+)#', $cookieValue, $matches);
$guid = $matches[0];

如果guid的格式总是那样,那么正则表达式可以更新为更具体。现在它将在guid = up之后匹配任何内容,直到它与不是数字,小写十六进制字母(a-f)或破折号的东西匹配。

如果cookie是key1 = value1& key2 = value2 ...格式,那么使用PHP的parse_str也是一个很好的选择。它采用URL参数样式字符串并将其分解为多个键/值对。

$cookieValue = $_COOKIE['LoginValue'];
parse_str($cookieValue, $cookieParts);
$guid = $cookieParts['guid'];

这种方式可能是以“PHP”方式获取这些值的更简洁方法。