1

我正在尝试为我的论坛创建一个简单的 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

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

4

1 回答 1

3

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

但是,有一些库非常适合替换 BBCode。StringParser_BBCode就是其中之一。这些库不仅仅是替换。例如,它们通常会阻止畸形的 BBCode 之类[b][i]foo[/b][i]的变成<strong><em>foo</strong></em>(即畸形的 HTML)。而且,他们可以在防止 XSS 注入方面做得更多。

于 2013-01-03T22:47:18.443 回答