gpt4 book ai didi

php - 正则表达式和 BBCode - 完善嵌套报价

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:34 25 4
gpt4 key购买 nike

我正在为我的网站制作一些 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] 正在关闭引用 block 。

我使用的正则表达式是:

"[quote=(.*?)\](.*?)\[/quote\]'is"

我怎样才能使嵌套引号正确显示?

谢谢。

最佳答案

你可以构造递归正则表达式(根据他们的更新日志,自 libpcre-3.0 开始可用):

\[quote=(.*?)\](((?R)|.)*?)\[\/quote\]

但如果您遵循@codeka 的建议会更好。

更新: (?R)这里的意思是«将整个正则表达式插入到(?R)的位置发生»。所以a(?R)?b等同于(如果您忘记捕获组) a(a(?-1)?b)?b相当于a(a(a(?-1)?b)?b)?b等等。而不是 (?R)你可以使用 (?N) , (?+N) , (?-N)(?&a)这意味着«用第 N 个捕获组替换»、«用第 N 个下一个捕获组替换»、«用第 N 个前一个捕获组替换» 和 «用名为 «a» 的捕获组替换。

关于php - 正则表达式和 BBCode - 完善嵌套报价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com