BBCode 需要 preg_replace 帮助

Posted

技术标签:

【中文标题】BBCode 需要 preg_replace 帮助【英文标题】:preg_replace help needed for BBCode 【发布时间】:2011-06-21 02:16:03 【问题描述】:

我无法确定与 php 的 preg_replace 函数一起使用的正确模式。这是phpBB论坛上一些BBCode的示例。

[color=black][font=Times New Roman][color=black]Thanks. As discussed last night/this morning, we were able to Cable and provide some small relief. After enough waste water was evacuated, the camera diagnosis found at 30 foot from clean-out, heavy root penetration and possible damage/separation to the line. We don’t want to throw a cost to fix/repair without a second opinion from xxx. We will have solid cost of repair later today of first thin in the morning. [/color][/font][/color]

我想删除可能嵌入在文本中的任意数量的开始和结束字体标签,但将文本保留在中间。在这种情况下,我想结束:

[color=black][color=black]Thanks. As discussed last night/this morning, we were able to Cable and provide some small relief. After enough waste water was evacuated, the camera diagnosis found at 30 foot from clean-out, heavy root penetration and possible damage/separation to the line. We don’t want to throw a cost to fix/repair without a second opinion from xxx. We will have solid cost of repair later today of first thin in the morning. [/color][/color]

字体名称各不相同,有些名称中有空格,有些则没有。无论如何,模式匹配都必须工作。

提前致谢!

【问题讨论】:

【参考方案1】:

如果你只是删除它们,你不需要太复杂的正则表达式...

$str = '[color=black][font=Times New Roman][color=black]Thanks. As discussed last night/this morning, we were able to Cable and provide some small relief. After enough waste water was evacuated, the camera diagnosis found at 30 foot from clean-out, heavy root penetration and possible damage/separation to the line. We don’t want to throw a cost to fix/repair without a second opinion from xxx. We will have solid cost of repair later today of first thin in the morning. [/color][/font][/color]';

$regex = '/\[font=.*?\]|\[\/font\]/i';

$str = preg_replace($regex, '', $str);

var_dump($str);

输出

string(457) "[color=black][color=black]Thanks. As discussed last night/this morning, we were able to Cable and provide some small relief. After enough waste water was evacuated, the camera diagnosis found at 30 foot from clean-out, heavy root penetration and possible damage/separation to the line. We donÕt want to throw a cost to fix/repair without a second opinion from xxx. We will have solid cost of repair later today of first thin in the morning. [/color][/color]"

See it on ideone.

【讨论】:

谢谢亚历克斯。会试一试的!

以上是关于BBCode 需要 preg_replace 帮助的主要内容,如果未能解决你的问题,请参考以下文章

PHP - BBCode 解析器 - 解析 bbcode 链接标记和未标记链接

php preg_replace 帮助 iframe src

RegEx删除嵌套在bbcode标记内的bbcode标记

Xamarin Forms 跨平台 BBCode 支持

Godot:如何垂直对齐bbcode

跳过解析 CODE 标签内的 BBCode