PHP简单的BB代码 - 结束格式化

时间:2013-01-03 22:38:00

标签: php replace bbcode

我正在尝试为我的论坛创建一个简单的BB代码,如PHP中的脚本。问题是,我不知道如何阻止用户发布这样的内容..

[b] Hahah
[b] Will make all of your text
[b] on this page bold

这会显示(因为我正在替换单词)

<strong> Hahah
<strong> Will make all of your text
<strong> on this page bold

什么是防止这种情况并在帖子底部结束标记的好方法?

1 个答案:

答案 0 :(得分:3)

用HTML替换BBCode实际上并不像看起来那么容易。仅使用str_replace()将永远不够好。因为,正如你所说,人们只能放置开放标签,这样就可以改变你的布局。一个流行的“解决方案”是使用preg_replace()代替,使用与open和close标记匹配的正则表达式。但是,对于像[url]这样的BBCode标记来说,这是非常不安全的(您可以在这些URL标记中插入JavaScript)。

但是,有一些图书馆非常适合替换BBCode。 StringParser_BBCode就是其中之一。这些库不仅仅是替换它们。例如,他们通常会阻止[b][i]foo[/b][i]这样格式错误的BBCode变成<strong><em>foo</strong></em>(格式错误的HTML)。而且,他们可以在防止XSS注射方面做更多的事情。