我已将php升级到5.3,所以我需要将正则表达式更改为preg_match。我已经使用分隔符并将正则表达式更改为preg_match成功地对脚本进行了一些更改,但我对以下代码感到震惊,我试图通过以下方式更改,但我没有得到任何错误cookie没有被删除。< / p>
if (preg_match('#COOKIE_PREFIX#i', $key))
原始代码是
// destroys the session cookies
function destroy($hash)
{
foreach ($_COOKIE as $key => $value)
{
if (eregi(COOKIE_PREFIX, $key))
{
$key = str_replace(COOKIE_PREFIX, '', $key);
xtsetcookie($key, '');
}
}
$this->userinfo['user_id'] = 0;
}
P.S:脚本开发人员没有回复我的支持请求....
答案 0 :(得分:4)
由于COOKIE_PREFIX
是一个定义为具有某些值的常量,因此不应将其括在引号中。而是尝试:
if (preg_match('#'.COOKIE_PREFIX.'#i', $key))
如果COOKIE_PREFIX
中包含#
,则会失败,因此请更好地使用:
if (preg_match('#'.preg_quote(COOKIE_PREFIX,'#').'#i', $key))