4

我目前在评论系统中使用 Zend_Filter_StripTags,但是当输入 '<3' 时东西有点中断。StripTags 似乎不够聪明,无法意识到它不是 HTML 标记,并且将过滤器创建为“new Zend_Filter_StripTags(array('3'))”似乎也不起作用。

我应该先通过正则表达式传递输入,还是有办法让 Zend_Filter_StripTags 变直并正确飞行?

4

4 回答 4

5

最后编写了一个 Zend_Filter 类,它基本上是 HTMLPurifier 的包装器。完美运行,因为 HTMLPurifier 比 striptags 聪明很多。

于 2009-04-08T19:19:30.997 回答
1

我对 Zend 不太熟悉,但如果你想要<3允许的东西,就做htmlspecialchars而不是strip_tags在它上面。

于 2009-02-13T01:27:41.583 回答
1

你想要的是 Zend_Filter_HtmlEntites 最有可能。

请参阅:Zend_Filter_HtmlEnties

于 2009-02-19T08:09:15.253 回答
1

htmlspecialchars 和 Zend_Filter_HtmlEntities 的问题在于,如果您尝试去除所有 html 标记(如“a”和“img”等),那么您最终会在输出中得到该标记,而不是去除它们。

以博客上的评论为例。如果您使用 htmlspecialchars 或 Zend_Filter_HtmlEntities,在有人尝试使用 html 输入链接的评论中,您最终会在显示评论时显示该标记。但是如果你使用 strip_tags 或 Zend_Filter_StripTags 你最终会破坏评论,因为两者都不够聪明,无法意识到 '<3' 不是标签,并且只是从 '<3' 中删除所有内容,直到评论结束(或直到它找到 '>' )。

如果 Zend 有类似 HTMLPurifier 之类的东西会很好,它会在去除标签之前实际检查和验证输入。这意味着像'<3'这样的东西会被单独留下,而像'Awesome Site'这样的东西会变成'Awesome Site'。

这是我正在尝试解决的一个问题,目前看来我最终要编写自己的 Zend_Filter 类,它基本上是 HTMLPurifier 的包装器。

于 2009-03-02T22:40:03.167 回答