警告:preg_match()[function.preg-match]:未知修饰符'('

时间:2011-05-09 19:04:35

标签: php preg-match modifier

我有这个HTML标记:

<div class="title">Copy me if you can</div>

所以我想用preg_match来“只要你可以复制我” 我正在使用这种preg模式:

$preg = "<div class=\"title\">(.+?)</div>";

所以我写了这段代码

$match = preg_match($preg,$content);

浏览器输出:

Warning: preg_match() [function.preg-match]: Unknown modifier '('

什么

5 个答案:

答案 0 :(得分:4)

你忘了分隔符

$preg = '~<div class="title">(.+?)</div>~';

模式中的第一个字母始终定义要使用的分隔符。在您的情况下为<,因此结束分隔符为>。之后的所有内容都被用作特殊修饰符,它会改变特定的行为。 (不是有效的修饰符。这是错误消息想要告诉你的内容:)

答案 1 :(得分:1)

您需要为正则表达式添加分隔符。试试这个:

$preg = "/<div class=\"title\">(.+?)<\/div>/";

/是分隔符,用于标记正则表达式的开始和停止。分隔符的原因是您可以为正则表达式添加标记。正则表达式后插入这些标志。例如:

$preg = "/<div class=\"title\">(.+?)<\/div>/i";

我添加了i作为修饰符,将正则表达式搜索标记为不区分大小写。

答案 2 :(得分:1)

尝试:$preg = '/<div class="title">([^<]+)</div>/';

答案 3 :(得分:1)

就个人而言,当涉及到HTML时,我会远离事实定界符/并使用#代替,因此您不必记住转义任何结束的HTML标记。

$preg = '#<div class="title">([^<]+)</div>#';

答案 4 :(得分:1)

我有同样的问题,并想知道我是否可以这样做,例如: 警告:preg_match()[function.preg-match]:第707行/home/08/public/www/wp-content/plugins/woocommerce-gateway-dibs-form/gateway-dibs.php中的未知修饰符't'

这是代码: if(preg_match($ _ SERVER [“REQUEST_URI”],'woocommerce / dibscancel')!== false){

        header("HTTP/1.1 200 Ok");

        $callback = new WC_Gateway_Dibs;
        $callback->cancel_order(stripslashes_deep($_REQUEST));
        return;
    }