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

发布于 2024-11-05 16:49:57 字数 443 浏览 4 评论 0原文

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

什么

I have this HTML tags :

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

so I wanna use preg_match to take just "Copy me if you can"
I'm using this preg pattern :

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

So I wrote this code

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

The browser outputs :

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

What

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浪菊怪哟 2024-11-12 16:49:57

您忘记了分隔符

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

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

You forgot the delimiter

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

The first letter in the pattern always defines the delimiter to use. In your case its <, so the ending delimiter is >. Everything after that is used as special modifier, that changes specific behaviours. ( is not a valid modifier. Thats what the error message wanted to tell you :)

似梦非梦 2024-11-12 16:49:57

尝试:$preg = '/

([^<]+)

/';

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

南风起 2024-11-12 16:49:57

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

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

Personally, when HTML is involved I'd steer away from the defacto delimiter / and use # instead so you don't have to remember to escape any closing HTML tags.

$preg = '#<div class="title">([^<]+)</div>#';
赏烟花じ飞满天 2024-11-12 16:49:57

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

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

/ 是标记正则表达式开始和结束的分隔符。使用分隔符的原因是为了让您可以向正则表达式添加标志。这些标志被插入到您的正则表达式之后。示例:

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

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

You need to add delimites to your regex. Try this:

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

/ are delimiters which marks the start and stop of your regex. The reason for delimiters is so that you can add flags to your regex. Those flags are inserted after your regex. Example:

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

I've added i as a modifier, marking the regex search as case insensitive.

伤痕我心 2024-11-12 16:49:57

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

I have the same problem and wonder if I could do the same, ex.:
Warning: preg_match() [function.preg-match]: Unknown modifier 't' in /home/08/public/www/wp-content/plugins/woocommerce-gateway-dibs-form/gateway-dibs.php on line 707

This is the code:
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;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文