使用htmlspecialchars时,对BBCodes进行例外处理

时间:2012-06-12 21:27:01

标签: php html special-characters bbcode

我使用htmlspecialchars来清理网站评论,它将<>更改为html特殊字符。但我还需要在评论中加入一些链接,就像在这里一样。 我认为像perg_replace这样的东西可以为htmlspecialchars做一个例外,例如从htmlspecialchars隐藏[LINK]<a href="...">...</a>[/LINK]。我怎么能在PHP中做到这一点?或者有什么更好的方法呢?

2 个答案:

答案 0 :(得分:1)

我建议使用一个库来解析BBCode或类似的东西 - 一般来说,它会消毒输入本身。一个快速谷歌出现了NBBC,虽然这可能有点矫枉过正。你甚至不需要使用BBCode,除非你已经设置了它的心脏 - 有Markdown之类的完美的PHP库。

答案 1 :(得分:1)

您可以使用此代码:

$comment = preg_replace('/'.preg_quote('[link]','/').'(.*?)'.preg_quote('[/link]','/').'/eisU',"htmlspecialchars_decode('$1')", $comment);