我正在为我的网站编写一些 BBcode。
我已经设法让大部分代码完美运行,但是 [QUOTE] 标签给了我一些悲伤。
当我得到这样的东西时:
[QUOTE=1]
[QUOTE=2]
This is a quote from someone else
[/QUOTE]
This is someone else quoting someone else
[/QUOTE]
它将返回:
> 1 said: [QUOTE=2]This is a quote from
> someone else
This is someone else quoting someone else[/QUOTE]
所以发生的事情是嵌套引用中的 [/quote] 正在关闭引用块。
我正在使用的正则表达式是:
"[quote=(.*?)\](.*?)\[/quote\]'is"
如何才能使嵌套引号正确显示?
谢谢。
您可以构造递归正则表达式(根据其变更日志自 libpcre-3.0 起可用):
\[quote=(.*?)\](((?R)|.)*?)\[\/quote\]
但如果你遵循@codeka的建议会更好。
Update:
(?R)
这里的意思是“将整个正则表达式插入到其中的位置”(?R)
发生»。所以a(?R)?b
相当于(如果你忘记了捕获组)a(a(?-1)?b)?b
这相当于a(a(a(?-1)?b)?b)?b
等等。代替(?R)
您可以使用(?N)
, (?+N)
, (?-N)
and (?&a)
这意味着“用第 N 个捕获组替换”、“用第 N 个下一个捕获组替换”、“用第 N 个前一个捕获组替换”和“用名为“a”的捕获组替换”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)