PHP-将ereg转换为preg_match,但它';It’他还在出错

PHP-将ereg转换为preg_match,但它';It’他还在出错,php,preg-match,Php,Preg Match,我已将所有文件从ereg转换为preg\u match,但仍有一行代码存在问题。我对分隔符进行了多次更改,将单引号“改为双引号”、反斜杠和正斜杠,但它仍然抛出此错误: Warning: preg_match() [function.preg-match]: Unknown modifier 'b' in /home/casper13/public_html/youbetcha/core/core.template.php on line 2267 原始代码: $cache_override =

我已将所有文件从
ereg
转换为
preg\u match
,但仍有一行代码存在问题。我对分隔符进行了多次更改,将单引号“改为双引号”、反斜杠和正斜杠,但它仍然抛出此错误:

Warning: preg_match() [function.preg-match]: Unknown modifier 'b' in /home/casper13/public_html/youbetcha/core/core.template.php on line 2267
原始代码:

$cache_override = array('member');

    foreach ($cache_override as $val)
    {
        if (ereg('^/'.$val.'/', $IN->URI))
        {
            $query->row['cache'] = 'n';
        }
    }
我已将ereg线路更新为:

if (preg_match('@^/@'.$val.'/', $IN->URI))
此外:

此外:


我尝试了许多不同的方法,但仍然是同一个错误。我不是PHP程序员,但我已经在网络上进行了研究,虽然我修复了100行,但这个行不通。你能给一个老gal一个线索吗?

Perl正则表达式的分隔符应该在模式的开始和结束处,后者可以选择在由修饰字符降低

if (preg_match('@^/'.$val.'/@', $IN->URI))

如果$val不包含@字符,则可以正常工作。

看起来像是分隔符混淆。分隔符必须是regexp中的第一个和最后一个字符(后面只有可选的修饰符)。您的regexp以
@
开头,以
/
结尾,这将不起作用。请尝试此操作(使用
|
作为分隔符,您可以选择所需内容,只要它不存在于
$val
中):


我还想说谢谢你的解释。如果我再次遇到这个问题,我理解你对这个模式的看法。我将能够在未来找到并修复。不客气,不久前我还处在你的位置上,然后我决定以正确的方式学习preg,这是一项我此后从未后悔过的投资:-)。php手册中关于PCRE毫无用处。
if (preg_match('@\^/@'.$val.'/', $IN->URI))
if (preg_match('@^/'.$val.'/@', $IN->URI))
if (preg_match("|^/$val/|", $IN->URI));