【问题标题】:Pattern to match BBCode tags even if there are spaces or carriage returns?即使有空格或回车符也要匹配 BBCode 标签的模式?
【发布时间】:2013-10-13 16:13:26
【问题描述】:

我有以下可能的字符串

示例 A

[attach]123[/attach]
[attach]456[/attach]
[attach]789[/attach]

示例 B

[attach]123[/attach]

[attach]456[/attach]

[attach]789[/attach]

示例 C

<space>
<carriage return>
[attach]123[/attach]
[attach]456[/attach]
[attach]789[/attach]

我需要一个匹配附加代码内部字符的正则表达式模式,但是示例之间的差异与每个附加代码周围的间距有关,正则表达式是否只是忽略所有间距和回车差异?任何人都可以帮助建立一个 preg_match 吗?

谢谢!

【问题讨论】:

  • 你能把你的尝试放在你的问题中吗?另外,你可以有嵌套标签吗?喜欢[attach][b]123[/b][/attach]
  • @jerry 这是我到目前为止所尝试的,但它只匹配第一行 [attach](.+?)[\/attach]
  • 您可以编辑您的问题并在您使用时输入代码吗?这可能只是您提取结果的方式。 preg_match_all 应该会得到您要查找的所有不同号码。
  • @jerry 你是对的,做到了!哈。您可以创建一个答案并将其标记为正确答案吗

标签: regex preg-match preg-match-all


【解决方案1】:

正则表达式应该可以工作,尽管您可以使用不同的分隔符来避免转义,例如~:

preg_match_all('~\[attach\](.+?)\[/attach\]~i', $text, $matches);

viper-7 demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多