Zend Framework Фильтр ввода StripTag и "<3" - PullRequest
4 голосов
/ 13 февраля 2009

В настоящее время я использую Zend_Filter_StripTags в системе комментирования, но материал, вроде как, ломается, когда вводится «<3». Похоже, что StripTags не настолько умны, чтобы понимать, что это не HTML-тег, и создание фильтра как «new Zend_Filter_StripTags (array ('3'))» «тоже не работает. </p>

Должен ли я сначала пропустить ввод через регулярное выражение или есть способ заставить Zend_Filter_StripTags выпрямиться и летать правильно?

Ответы [ 4 ]

5 голосов
/ 08 апреля 2009

Закончилось написание класса Zend_Filter, который был в основном оболочкой для HTMLPurifier. Работает отлично, потому что HTMLPurifier НАМНОГО умнее стриптагов.

1 голос
/ 19 февраля 2009

Скорее всего, вы хотите Zend_Filter_HtmlEntites.

См .: Zend_Filter_HtmlEnties

1 голос
/ 03 марта 2009

Проблема с 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». </p>

Это проблема, которую я пытаюсь обойти, и в данный момент мне кажется, что я собираюсь написать свой собственный класс Zend_Filter, который по сути является оберткой для HTMLPurifier.

1 голос
/ 13 февраля 2009

Я не очень знаком с Zend, но если вы хотите, чтобы такие вещи, как <3 были разрешены, просто сделайте htmlspecialchars вместо strip_tags на нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...