编程语言
首页 > 编程语言> > php-从eregi到preg_match

php-从eregi到preg_match

作者:互联网

我已经将php升级到5.3,所以我需要将正则表达式更改为preg_match.我已经成功地使用定界符对脚本进行了少量更改,并将正则表达式更改为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;
}

P.S:脚本开发人员没有回复我的支持请求.

解决方法:

由于COOKIE_PREFIX是定义为具有某些值的常量,因此不应将其用引号引起来.而是尝试:

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

如果COOKIE_PREFIX中包含#,则此操作将失败,因此最好使用:

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

标签:preg-match,php,regex
来源: https://codeday.me/bug/20191102/1993285.html