从eregi到preg_match

时间:2011-04-28 12:59:38

标签: php regex preg-match

我已将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:脚本开发人员没有回复我的支持请求....

1 个答案:

答案 0 :(得分:4)

由于COOKIE_PREFIX是一个定义为具有某些值的常量,因此不应将其括在引号中。而是尝试:

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

如果COOKIE_PREFIX中包含#,则会失败,因此请更好地使用:

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