【问题标题】:preg_replace expression help needed for PHPPHP 需要 preg_replace 表达式帮助
【发布时间】:2011-05-09 17:08:57
【问题描述】:

试图从一些文本中去除一些 BBCode。我想使用 PHP preg_replace 函数删除 [img] 和 [/img] 之间的所有内容,例如:

Here is my image[img]http://www.abc.com/image1.jpg[/img] and more text

匹配:[img] 后跟任意数量的字符,后跟 [/img]

结果:

Here is my image and more text

谢谢。

【问题讨论】:

  • 好吧,它不起作用。我试过 /\[\i\m\g\]/ 似乎与 [img] 匹配。这是我无法弄清楚的其余字符串。
  • regular-expressions.info阅读一些教程

标签: php preg-replace


【解决方案1】:

首先,找到与您的 BBCode 标签匹配的模式:

\[img\][^\[]+\[/img\]

唯一困难的部分是类[^\]]\[ 表示任何左括号,而 ^ 表示 NOT。所以这个类将匹配所有不是[的东西。
您也可以用 .+ 替换该类并使用 U(不贪婪)选项。

既然您现在要使用哪种模式,您只需将其替换为...一个空字符串。工作就完成了!

这是一个非常基本的正则表达式,理解它并能够重现它很重要

【讨论】:

    【解决方案2】:
    /\[img\].*?\[\/img\]/i
    

    将处理[img][/img] 之间的所有内容(不区分大小写)

    【讨论】:

      【解决方案3】:

      不要忘记对您的内容进行分组,例如'/[img](.+)[\/img]/i',所以在你替换条件时你可以引用标签之间的值''

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        • 1970-01-01
        • 2011-03-10
        • 2012-11-30
        • 2019-01-31
        • 2023-03-19
        相关资源
        最近更新 更多