2

我有这个 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 '('

什么

4

5 回答 5

4

你忘记了分隔符

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

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

于 2011-05-09T19:06:39.803 回答
1

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

这是代码: 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;
    }
于 2013-05-18T10:02:02.087 回答
1

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

$preg = '#<div class="title">([^<]+)</div>#';
于 2011-05-09T19:37:03.030 回答
1

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

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

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

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

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

于 2011-05-09T19:05:52.750 回答
1

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

于 2011-05-09T19:07:01.707 回答