- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为我的网站制作一些 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/
基本上,我正在尝试将 xenforo 的论坛脚本数据库转换为我的自定义数据库(放弃我在 xenforo 上的使用),他们的 bbcode 让我很烦。 我正在尝试将他们的所有 url bbcode 更改
好吧,让我解释一下我的意思是哪种“剧透标签”: 在我所在的 phpBB 论坛中,有一个 [剧透] BBCode 隐藏了里面的文本,有一个显示/隐藏的按钮,应该看起来像发布页面中的 prosilver
所以我创建了这个函数来替换字符串中的特殊字符。主要目的是替换 BBCode 标签内的那些特殊字符([code=any]我想显示的代码[/code]),但当时它是否替换其余部分并不重要BBcode 标签
我有一些 javascript 会变成 [b]test[/b]进入 test 还有,这个 [i]test 2[/i]会变成 test 效果很好,但我也需要能够对其进行解码。对于多种类型的 bbcode
这是脚本的 jQuery 变体(它不起作用): $("div.post-content").each(function(){ if($(this).innerHTML.indexOf("[/
我有一个字符串想要转换为 div,但它无法正确关闭 div。 我使用的示例字符串是这样的: [quote]Quote by: user1 [quote]Quote by: user2 ads[/quo
我有这个函数来解析 bbcode -> html: $this->text = preg_replace(array( '/\[b\](.*?)\[\/b\]/ms', '/\[i
我正在尝试找到一种从字符串中删除 BBCode 的方法。我发现的模块(BBCode 和 Post Markup)似乎只将它们转换为 HTML,而不是仅仅删除 BBCode 并返回一个干净的字符串。如果
我在装有最新操作系统的 mac book air 上使用最新版本的 chrome 浏览器。我正在尝试在 javascript 中创建一个 BBcode 解析器。我可以很容易地解析一行代码,例如 [b]
我编写了一个 Javascript bbcode,类似于我用来编写此消息的代码。它还包含一个实时预览框,如下图所示。我目前面临的唯一问题是某些嵌套的 bbcode 未解析。 例如: [quote]
我需要一个正则表达式来去除字符串中的任何 BBCode。我有以下内容(和一个带有标签的数组): new RegExp('\\[' + tags[index] + '](.*?)\\[/' + tags
我有一个非常简单的 Javascript BBCode 解析器用于客户端实时预览(不想为此使用 Ajax)。问题是,这个解析器只识别第一个列表元素: function bbcode_parser(st
因此,我正在尝试向我的网站 (bbCodes) 添加笑脸符号,但我不知道该怎么做。我的数据库中有所有笑脸触发词和输出,以便更轻松地删除/添加笑脸。 下面的这段代码什么都不做...我没有收到错误,它也没
我已经阅读过有关此主题的其他帖子,但似乎没有一个有帮助。 好的,我正在编写自己的 BBCode 解析器。现在我的问题是如何不解析 [code] 标签之间的 BBCode?我真的不知道该怎么做。这是我当
所以看起来这个问题已经被问到太阳下的几乎所有语言......除了 C++。我有一个 XML 文档,在文本节点中存储了一些 bbcode。我正在寻找删除它的最佳方法,我想我会在这里查看是否有人知道一些预
我编写了一个 Javascript bbcode,类似于我用来编写此消息的代码。它还包含一个实时预览框,如下所示。我目前面临的唯一问题是某些嵌套的 bbcode 无法解析。 例如: [quote]
我正在使用 BBcode 编辑器通过表单发布内容。当我通过按 Enter 键然后发送表单并在屏幕上打印发送的文本来创建新行时,所有内容都在一行中,并且没有 BBcode 代表它。起初我以为我使用的编辑
我目前正在尝试测试匹配以下内容的正则表达式模式: [#123456] [#aabc36] 然后转换成HTML代码: 但是如果模式像这样: [/#123456] 然后被替换为 我尝试了以下模式: \
我有这个正则表达式: \[code(?:=(["']?)(.{0,50}?)\1)?\](?!\s*\[\/code\])(.*?)\[\/code\] 这个正则表达式应该支持: [code]cont
我正在研究 bbcodes 的自定义实现(基本上是 Wordpress 短代码)。为此,我需要匹配可以在两个类似 bbcode 的标签之间找到的内容。 例如: [example]The content
我是一名优秀的程序员,十分优秀!