gpt4 book ai didi

php正则表达式-cookie名称

转载 作者:行者123 更新时间:2023-12-04 02:21:11 24 4
gpt4 key购买 nike

我又需要帮助了。
我必须编写一个函数来获取 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,但没有任何效果。

谢谢 friend 的任何提示!

最佳答案

问题

问题是,在 JavaScript 中,您对 regexp 使用了方法 .match(),但在 PHP 中没有对 regexp 使用任何方法。

并且您无法轻松匹配键,您只能在遍历整个数组时执行此操作。

但是您不必使用正则表达式来实现您的需要。

解决方案

我推荐这个:

$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;
}
}

您现在拥有包含每个有效 cookie 集名称的表 $cookies。如果您只需要 _ 之后的部分,请改用此行:
$cookies[] = str_replace('cookie_','',$name);

关于php正则表达式-cookie名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com