【问题标题】:Remove blank bullet points (BBCode)删除空白项目符号 (BBCode)
【发布时间】:2014-01-28 17:30:12
【问题描述】:

好的,所以我正在尝试提出一种 PHP 方法来删​​除我正在做的空白项目符号列表。

这是我的一个例子:

http://rubular.com/r/01ydqcWx3Q

但我似乎无法让它只抓住空白的 [*] 以便我可以删除它们...... 这是抓取非空白的......所以我可以把它放在下面的 $matches 变量中:

preg_match('/\[\*\][A-z0-9 ]+/', $body, $matches);

但是..我希望 $matches 包含空白的,所以我可以删除它们..或者如果有一种方法可以抓取除 [list] 之外的匹配项之外的所有内容..

如您所见,它正在抓取 [/list] 中的 [,这也不是我想要的。 其中一些将只有两个空白,三个空白,一个空白,或者......更多......

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: php regex bbcode


    【解决方案1】:

    如果您想将[*] 与正则表达式匹配,则必须使用反斜杠转义所有三个字符,因为它们是meta-characters。接下来,您必须确定[*] 后面是否紧跟换行符(\n\r\n)或列表结尾([/list])。然后用空字符串替换它。

    $body = "[list][*]Hydrogen
    [*]
    [*]Helium
    [*]Lithium
    [*]
    [*]
    [*]Beryllium
    [*]Boron
    [*]Carbon
    [*]Nitrogen
    [*]
    [*]Oxygen
    [*][/list]";
    $body = preg_replace("/\[\*\](?:\r?\n|(?=\[\/list\]))/", "", $body);
    print($body);
    

    输出将是:

    [list][*]Hydrogen
    [*]Helium
    [*]Lithium
    [*]Beryllium
    [*]Boron
    [*]Carbon
    [*]Nitrogen
    [*]Oxygen
    [/list]
    

    【讨论】:

      【解决方案2】:

      使用它来捕获仅包含 [*] 的字符串:

      ^\[\*\]$
      

      那么指令是:

      preg_replace('/^\[\*\]$/', '', $body);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多