弃用的eregi Call,preg_match Fix Needed

时间:2011-07-19 03:38:38

标签: php preg-match deprecated eregi

我有一个开源程序,我正在尝试整合到一个网站中。我想更新其中导致我的开发LAMP设置出现问题的代码。

if ($dbselect)
        {
            if (!eregi('utf',strtolower($script_encoding)) && !defined('IN_LOGINPAGE'))
            {
               mysql_query("SET NAMES 'utf8'");   
            }
               else if (empty($script_encoding) || eregi('utf',strtolower($script_encoding))) 
            {
               mysql_query("SET NAMES 'utf8'");
            }

        }

我知道eregi调用已被弃用,而preg_match应该被使用,但它会给我一个以下错误......

Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in

如果有人可以解决它并解释为什么我会非常感激。

TIA(提前致谢)

1 个答案:

答案 0 :(得分:2)

您需要使用非字母数字和非反斜杠字符(每边都是相同的)包装preg表达式。

所以,而不是:

eregi('utf',strtolower($script_encoding))

// wrapped in '#' (# and / are the two most common. I use # almost exclusively in PHP
// so that I don't have to escape the /)
// i = case insensitive, so you don't need strtolower
preg_match('#utf#i',$script_encoding)