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