Php 从埃雷吉到赛前

Php 从埃雷吉到赛前,php,regex,preg-match,Php,Regex,Preg Match,我已经将我的php升级到5.3,所以我需要将正则表达式更改为preg_match。我已经成功地使用分隔符对脚本进行了一些更改,并将regex更改为preg_match,但是我被以下代码打动了,我尝试用以下方式更改这些代码,尽管我没有收到任何错误,但是cookie没有被删除 if (preg_match('#COOKIE_PREFIX#i', $key)) 原始代码是 // destroys the session cookies function destroy($hash) {

我已经将我的php升级到5.3,所以我需要将正则表达式更改为preg_match。我已经成功地使用分隔符对脚本进行了一些更改,并将regex更改为preg_match,但是我被以下代码打动了,我尝试用以下方式更改这些代码,尽管我没有收到任何错误,但是cookie没有被删除

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

注意:脚本开发人员没有回复我的支持请求……

因为
COOKIE\u PREFIX
是一个定义为具有某些值的常量,您不应该将其括在引号中。相反,请尝试:

if (preg_match('#'.COOKIE_PREFIX.'#i', $key))
如果
COOKIE\u前缀
中包含
,则此操作将失败,因此最好使用:

if (preg_match('#'.preg_quote(COOKIE_PREFIX,'#').'#i', $key))