PHP

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

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

Решение
Для HTML-документа с внедренными ссылками и другими тегами, который нужно отображать как простой текст, используйте функцию htmlentities():echo htmlentities('<p>O'Reilly & Associates</p>');
<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); // ни те, ни другие
Stew’s'" tppabs="http://oooportal.ru/"fletch.html">Stew’s" favorite movie. Stew\'s'" tppabs="http://oooportal.ru/"fletch.html">Stew's" favorite movie.

Обе функции допускают передачу им таблицы кодировки символов, которая устанавливает соответствие символов и элементов. Чтобы определить, какая таблица была использована предыдущей функцией, вызовите функцию 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
Теги:
формы
Добавлено: 22 Июля 2018 11:16:16 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...