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


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

我有这个HTML标签:

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

所以我想用preg_match来"如果可以的话跟我走"我正在使用这种怀孕模式:

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

所以我写了这段代码

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

浏览器输出:

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

什么

你忘记了分隔符

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

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

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

就个人而言,当涉及 HTML 时,我会避开事实上的分隔符/并使用 # 代替,这样您就不必记住转义任何结束的 HTML 标记。

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

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

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

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

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

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

我有同样的问题,想知道我是否可以做同样的事情,例如:警告: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;
    }