Пользовательские данные и escape-последовательности

Задача
Необходимо скрытно отображать на HTML-странице информацию, вводимую пользователем.

Решение
Для HTML-документа с внедренными ссылками и другими тегами, который нужно отображать как простой текст, используйте функцию htmlentities():echo htmlentities('

O'Reilly & Associates

');
<p>O'Reilly & Associates</p>

Обсуждение
В PHP есть пара функций для превращения в escape-последовательности символов в HTML-документе. Самая главная из них – функция htmlspecialchars(), преобразующая в escape-последовательности четыре символа: < > " и &. В зависимости от необязательных параметров она может также транслировать символ ' вместо или в дополнение к ".

Если надо закодировать что-то более сложное, используйте функцию htmlentities() – она расширяет возможности htmlspecialchars() до кодирования любого символа, который имеет элемент HTML.

$html = "Stew’s favorite movie.\n";
print htmlspecialchars($html); // двойные кавычки
print htmlspecialchars($html, ENT_QUOTES); // одинарные и двойные кавычки
print htmlspecialchars($html, ENT_NOQUOTES); // ни те, ни другие
<a href="fletch.html">Stew’s favorite movie.</a>
<a href="fletch.html">Stew's favorite movie.</a>
<a href="fletch.html">Stew’s favorite movie.</a>

Обе функции допускают передачу им таблицы кодировки символов, которая устанавливает соответствие символов и элементов.


Чтобы определить, какая таблица была использована предыдущей функцией, вызовите функцию get_html_translation_table() и передайте ей HTML_ENTITIES или HTML_SPECIALCHARS. Она возвращает массив, определяющий соответствие между символами и элементами; можно использовать его как основу для собственной таблицы.

$copyright = "Copyright © 2003 O’Reilly & Associates\n";
$table = get_html_translation_table(); // get <, >, ", and &
$table[©] = ’©’ // add ©
print strtr($copyright, $table);
Copyright © 2003 O’Reilly & Associates

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Защита от многократной отправки одной и той же формы
Использование элементов формы с несколькими вариантами значений
Кэширование запросов и результатов
Обработка внешних переменных с точками в именах
Обработка загруженных файлов

Вернуться в раздел: PHP / 9. Формы