Как декодировать все сущности, кроме HTML-сущностей - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть строка, содержащая специальные буквы, такие как "á" и htmlcode, такие как "<input type='text' />".Когда я храню эту строку в моей БД, я использую: htmlentities($string, ENT_QUOTES);.Проблема заключается в том, что при выводе текста я использую html_entity_decode($string_from_db, ENT_QUOTES) и все сущности, которые у меня есть в базе данных, например "&aacute;" для букв и "<input type='text' title="LA1&qu..." для html-кода, преобразуются.Так что мой вывод покажет букву "á" и текстовое поле, которое не является нормальным.Я хочу, чтобы письмо было таким, но для поля я хочу показать код "<input type='text' />", а не фактическое поле.

Мне нужно это для многоязычного сайта с большим количеством пользовательского ввода, поэтому мне нужноуметь правильно обрабатывать специальное письмо, а также защищать от неправильного ввода.Любой совет очень ценится.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

Ну, кажется, я понял это ... по крайней мере пока. Вот что я делаю:

  1. Текст, предоставленный пользователем, очищает его:

    function sanitize_form_input($string) {
        $string = mysql_real_escape_string($string);
        return $string;
    }
    
  2. Получено кодирование страницы, php-кодирование, html-кодирование, mysql-кодирование ... и любые другие возможные вещи с кодировкой, установленной в UTF-8.

  3. Вывести текст с помощью:

    function sanitize_db_output($string) {
        return htmlentities(stripslashes($string), ENT_QUOTES, 'UTF-8');
    }
    

Пожалуйста, дайте мне знать, если это неправильный способ сделать это.

0 голосов
/ 02 декабря 2011

Вы можете просто сделать дополнительные htmlspecialchars после html_entity_decode;эта функция будет преобразовывать только те символы, которые имеют специальную функцию в HTML, в свою сущность:

htmlspecialchars(html_entity_decode($string_from_db, ENT_QUOTES), ENT_QUOTES)

Следует позаботиться о том, чтобы полученная строка не содержала некодированных символов HTML.Конечно, с точки зрения производительности, это, вероятно, не лучшее решение, но оно простое!

...