【问题标题】:Warning: preg_match() [function.preg-match]: Unknown modifier '(' [duplicate]警告:preg_match() [function.preg-match]:未知修饰符 '(' [重复]
【发布时间】:2011-08-21 22:15:00
【问题描述】:

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

什么

【问题讨论】:

标签: php preg-match modifier


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 你不需要在结束 div 中转义 / 吗?此外,匹配点时区分大小写不是问题
  • @Nev 这只是一个解释分隔符的例子。
  • 了解,但如果有人实际尝试它是行不通的。不使用
    只会让不熟悉的人感到困惑。
【解决方案2】:

你忘记了分隔符

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

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

【讨论】:

  • 它有效!谢谢(:,但是是否有任何正则表达式只接受标签之间的内容?(如果可以,请复制我),我的正则表达式需要整个标签:/我知道我可以使用 str_replace() 将标签替换为正则表达式能胜任这项工作的人更好xD
【解决方案3】:

试试看:$preg = '/&lt;div class="title"&gt;([^&lt;]+)&lt;/div&gt;/';

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多