preg_match():编译失败:缺少)

时间:2015-07-31 09:55:18

标签: php regex wordpress

错误是:

  

PHP警告:preg_match():编译失败:缺失)在/home/siteraja/public_html/ar/wp-content/plugins/hide_my_wp/lib/mute-screamer/libraries/IDS/Monitor.php上的偏移量16处第312行   这是第227行的代码:

  // check if this field is part of the exceptions
        if (is_array($this->exceptions)) {
            foreach($this->exceptions as $exception) {
                $matches = array();
                $reg = '/'.str_replace('%','[A-Za-z0-9_-]*', str_replace('.','\.',$exception)).'/i';
                if (preg_match($reg, $key))
                    return false;


            }
        }

1 个答案:

答案 0 :(得分:0)

您正在使用变量初始化正则表达式模式。在不知道该字符串中可能包含哪些字符的情况下,您无法确定正则表达式语法是否正确。要消除此风险,请使用将在每个特殊字符前面转义({add preg_quote)的\。所以,替换

$reg = '/'.str_replace('%','[A-Za-z0-9_-]*', str_replace('.','\.',$exception)).'/i';

$reg = '/'.str_replace('%','[A-Za-z0-9_-]*', preg_quote($exception)).'/i';

另请注意,您只声明$matches = array();,但您没有使用它,但这可能只是因为您没有显示整个代码。