【发布时间】:2026-02-23 03:25:02
【问题描述】:
所以我正在尝试制作一个 php 函数来从 BBCode 样式 表单中获取 HTML 标记。事实是,我可以很容易地使用 preg_replace 获得标签。但是当我在同一个 bbcode 中有一个 bbcode 时,我会遇到一些麻烦......
像这样:
[blue]My [black]house is [blue]very[/blue] beautiful[/black] today[/blue]
所以,当我“解析”它时,我总是保留蓝色的 bbcode。类似的东西:
My house is [blue]very[/blue] beautiful today
除了第一个蓝色标签内的黑色标签内的蓝色标签外,所有内容都是彩色的。
我怎么能这样做?
有了更多信息,我尝试了:
Regex: "/\[blue\](.*)\[\/blue\]/si" or "/\[blue\](.*)\[\/blue\]/i"
Getting : "My house is [blue]very[/blue] beautiful today"
Regex : "/\[blue\](.*?)\[\/blue\]/si" or "/\[blue\](.*)\[\/blue\]/Ui"
Getting : "My house is [blue]very beautiful today[/blue]"
我必须循环 preg_replace 吗?有没有办法做到这一点,regex-style,不循环的东西?
感谢您的关注。 :)
【问题讨论】:
-
我建议搜索“php bbcode library”是你想看的地方。将其解析为 HTML,然后使用适当的 DOM 处理工具进行处理。不要试图重新发明*。
-
您能否进一步澄清一下?据我了解,您正在用 html 标签替换 BBCode 标签?
-
@UmurKaragöz 没错。它从一个 bbcode 开始,我想要它在 html 标签中! miken32 你说得对,我不应该重新发明*,但是我很好奇,我想知道我怎么能做到这一点:)
-
请不要手动编写简码,使用像我的简码这样完善的库,它可以让你用你想要的任何东西替换它们:github.com/thunderer/Shortcode
标签: php regex preg-replace