gpt4 book ai didi

php - 解析bbcode的最佳方式

转载 作者:可可西里 更新时间:2023-10-31 23:02:15 26 4
gpt4 key购买 nike

我想为 php 网站开发 bbcode 过滤器。 (我正在使用 cakephp,它将是一个 bbcode 助手)我有一些要求。

Bbcode 可以嵌套。所以类似的东西是有效的。

[block]  
[block]
[/block]
[block]
[block]
[/block]
[/block]
[/block]

Bbcode 可以有 0 个或多个参数。

例子:

[video: url="url", width="500", height="500"]Title[/video]

Bbcode 可能有多种行为。

假设,[url]text[/url] 将转换为 [url:url="text"]text[/url]或者视频 bbcode 可以在 youtube、dailymotion 之间进行选择....

我认为它满足了我的大部分需求。我已经用正则表达式做了一些事情。但我最大的问题是匹配参数。事实上,我得到了嵌套的 bbcode 和 0 参数的 bbcode。但是当我为参数添加正则表达式匹配时,它没有正确匹配嵌套的 bbcode。

"\[($tag)(=.*)\"\](.*)\[\/\1\]"//它不是 .*,而是非-贪婪匹配器

我现在没有完整的正则表达式,但我有一些看起来像(上图)的东西。

那么有没有一种方法可以有效地将 bbcode 与正则表达式或其他东西匹配。我唯一能想到的就是使用访问者模式并以这种方式将我的文本与每个可能的标签分开,我可以对我的文本解析有更多的控制,我可能可以验证我的文档,所以如果输入文本没有没有有效的 bbcode。我可以在保存任何内容之前通知用户错误。

我会使用 sablecc 来创建我的文本解析器。 http://sablecc.org/

有更好的主意吗?或者任何可以导致高效灵活的 bbcode 解析器的东西?

谢谢你,抱歉我的英语不好......

最佳答案

有几个现有的用于解析 BBCode 的库,研究这些库可能比尝试自己动手更容易:

这里有一些,如果你环顾四周,我相信还有更多:
PECL bbcode
PEAR HTML_BBCodeParser

关于php - 解析bbcode的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488963/

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