通过正则表达式匹配BBCode内容和属性

时间:2018-07-12 16:07:24

标签: php regex bbcode

我在较旧的项目中使用PECL BBCode类来管理BBCode,效果很好。在某些特殊情况下,这是不够的,因为我需要在输入上运行一个函数。因此,我想在运行PECL之前使用正则表达式执行此操作。

我想将[member] -tag与具有和没有属性匹配:

[member]Donald Duck[/member]
[member=Dr. Donald Duck]Donald Duck[/member]

我可以这样匹配他们:

\[member\](.+?)\[\/member\]
\[member=(.+?)\](.+?)\[\/member\]

如何一步一步做到这一点?我将=设为?但两者都不匹配。谢谢您的支持。

1 个答案:

答案 0 :(得分:1)

您应将=添加到可选组:

\[member(=.*?)?](.+?)\[\/member]
        ^^^^^^^

请参见regex demo

详细信息

  • \[member-文字[member子字符串
  • (=.*?)?-第1组:可选的=序列,然后是除换行符以外的任何0+字符,且数量尽可能少
  • ]-一个]字符(无需转义)
  • (.+?)-第2组:一个或多个除换行符以外的其他字符,并且尽可能少
  • \[\/member]-文字[/member]子字符串。