php 正则表达式 - cookie 名称
php regex - cookie name
我又需要帮助了。
我必须编写一个函数来获取 cookie。但我只知道部分 cookie 名称。我得到了一个运行良好的 JavaScript-函数:
function readCookie(cookiePart){
var results = document.cookie.match(cookiePart + '(.*)=(.*?)(;|$)');
if(results){
var result = results[0].replace(cookiePart,'');
var cookie= result.split("=");
return(cookie[0])
}else{
return null
}
}
alert(readCookie("cookie_"));
我尝试为 PHP 编写相同的代码。但还是卡住了:
$cookie_name = "cookie_";
if(!isset($_COOKIE["$cookie_name" . "/^*$/"])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
}
我想我做错了正则表达式部分。也许你可以帮我在哪里添加它?我在定义或匹配时尝试了 varaiablename,但没有任何效果。
谢谢朋友们的提示!
function keyLike(array $arr, $like)
{
foreach (array_keys($arr) as $k) {
if (preg_match($like, $k)) {
return true;
}
}
return false;
}
...
if (keyLike($_COOKIE, '/^cookie_.+/')) { ...
问题
问题是,在 JavaScript 中你使用了一个方法 .match()
用于正则表达式,但你没有在 PHP 中使用任何正则表达式。
而且你不能那么容易地匹配键,你只能在遍历整个数组时这样做。
但您不必使用正则表达式来实现您所需要的。
解决方案
我推荐这个:
$set = false;
$cookie_name = 'cookie_';
foreach ($_COOKIE as $name => $value) {
if (stripos($name,$cookie_name) === 0) {
echo "Cookie named '$name' is set with value '$value'!";
$set = true;
}
}
if (!$set) {
echo 'No cookie found :(';
}
将列出所有有效的 cookie(名称以 "cookie_" 开头),或显示悲伤消息。
而且我认为,如果您无需正则表达式就可以实现一些相对容易的事情,那么您应该这样做。
如果您之后需要使用 cookie 名称
使用修改后的代码:
$cookie_name = 'cookie_';
foreach ($_COOKIE as $name => $value) {
if (stripos($name,$cookie_name) === 0) {
$cookies[] = $name;
}
}
您现在 table $cookies
包含每个有效 cookie 集的名称。如果您只需要 _
之后的部分,请改用此行:
$cookies[] = str_replace('cookie_','',$name);
我又需要帮助了。 我必须编写一个函数来获取 cookie。但我只知道部分 cookie 名称。我得到了一个运行良好的 JavaScript-函数:
function readCookie(cookiePart){
var results = document.cookie.match(cookiePart + '(.*)=(.*?)(;|$)');
if(results){
var result = results[0].replace(cookiePart,'');
var cookie= result.split("=");
return(cookie[0])
}else{
return null
}
}
alert(readCookie("cookie_"));
我尝试为 PHP 编写相同的代码。但还是卡住了:
$cookie_name = "cookie_";
if(!isset($_COOKIE["$cookie_name" . "/^*$/"])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
}
我想我做错了正则表达式部分。也许你可以帮我在哪里添加它?我在定义或匹配时尝试了 varaiablename,但没有任何效果。
谢谢朋友们的提示!
function keyLike(array $arr, $like)
{
foreach (array_keys($arr) as $k) {
if (preg_match($like, $k)) {
return true;
}
}
return false;
}
...
if (keyLike($_COOKIE, '/^cookie_.+/')) { ...
问题
问题是,在 JavaScript 中你使用了一个方法 .match()
用于正则表达式,但你没有在 PHP 中使用任何正则表达式。
而且你不能那么容易地匹配键,你只能在遍历整个数组时这样做。
但您不必使用正则表达式来实现您所需要的。
解决方案
我推荐这个:
$set = false;
$cookie_name = 'cookie_';
foreach ($_COOKIE as $name => $value) {
if (stripos($name,$cookie_name) === 0) {
echo "Cookie named '$name' is set with value '$value'!";
$set = true;
}
}
if (!$set) {
echo 'No cookie found :(';
}
将列出所有有效的 cookie(名称以 "cookie_" 开头),或显示悲伤消息。
而且我认为,如果您无需正则表达式就可以实现一些相对容易的事情,那么您应该这样做。
如果您之后需要使用 cookie 名称
使用修改后的代码:
$cookie_name = 'cookie_';
foreach ($_COOKIE as $name => $value) {
if (stripos($name,$cookie_name) === 0) {
$cookies[] = $name;
}
}
您现在 table $cookies
包含每个有效 cookie 集的名称。如果您只需要 _
之后的部分,请改用此行:
$cookies[] = str_replace('cookie_','',$name);