Удалите HTML из заголовка поста во время декодирования HTML-сущностей в CakePHP - PullRequest
0 голосов
/ 31 марта 2012

У меня есть следующий пример того, что пользователь может ввести в поле для имени сообщения:

<h1><span>They're awesome people</span></h1>

Теперь, поскольку это заголовок сообщения, я хочу удалить все, чтоHTML полностью, прежде чем сохранить его в базе данных.Это связано с тем, что: а) по соображениям безопасности и б) если я экспортирую это как JSON, я не хочу очищать HTML при выводе данных для сторонних пользователей.

В своей модели я попробовал следующее:

public function beforeSave() {

        if (isset($this->data[$this->alias]['title']))
        {
            //$this->data[$this->alias]['title'] = Sanitize::clean($this->data[$this->alias]['title'], array('encode'=>true,'remove_html'=>true));

            $this->data[$this->alias]['title'] = html_entity_decode(Sanitize::html($this->data[$this->alias]['title'], array('remove'=>true)));
        }
        return true;

    }

Как вы можете видеть, я пытался очистить HTML и классом Clean, и HTML из класса Sanitize, но оба вызывают проблему в том, что они избегают кавычки из they're, делая ее похожей на &#039;.Я попытался использовать html_entity_decode вокруг sanitize, чтобы очистить это, но это все еще происходит.Любые идеи о том, как это сделать?

Если я сделаю это, хотя:

echo html_entity_decode('They&#039;re awesome people');

она работает нормально, поэтому функция в порядке, это проблема с использованием его в сочетании с классом sanitizeв CakePHP.

Спасибо

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Почему бы не использовать

 Sanitize::paranoid() 

Ручная

Или даже strip_tags

Чтобы заставить Sanitize :: html работать

Sanitize::html($var, array('remove'=>true, 'quotes' => ENT_NOQUOTES));

он использует htmlentities внутренне, и флаг по умолчанию установлен в ENT_QUOTES.

0 голосов
/ 31 марта 2012

Вы должны попробовать htmlspecialchars_decode () function.

Edit:

Используя только функцию PHP вместо библиотеки CakePHP, вы можете попробовать strip_tags () .

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