我正在尝试为我的论坛创建一个简单的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
什么是防止这种情况并在帖子底部结束标记的好方法?
答案 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注射方面做更多的事情。