Несмотря на то что кодирование данных при передаче между HTML-формами, базами данных и так далее чрезвычайно полезно, в РНР поддерживается несколько более простых (и очень удобных) преобразований. В качестве иллюстрации предположим, что нужно отобразить в браузере следующую строку:
<А HREF="example.php">npMMep НТМЬ-дескриптора</А>
Хитрость здесь в том, что нужно отобразить эту строку в браузере клиента так, как она выглядит в примере (а не как гиперссылку). Для таких целей, когда нужно отобразить символы, имеющие особое значение в HTML, существуют HTML-объекты. Эти объекты являются специальными строками, которые браузер интерпретирует как символы. Например, Sit; — это объектное представление символа <. Таким образом, для того чтобы предыдущий HTML-код был отображен как текст и не интерпретировался браузером, он должен выглядеть примерно так: Sit;A HREF="example.php"Sgt;Пример НТМЬ-дескриптора&И:;/A>
Несмотря на то что это не особо отличается от URL-кодирования, попытка преобразования этих HTML-объектов вручную является довольно-таки утомительной задачей. К счастью, в РНР для выполнения этой задачи предусмотрены две функции.
Первая из этих функций — htmlentities (). Эта функция преобразовывает все применимые символы в соответствующие HTML-объекты. Функция имеет следующий синтаксис:
htmlentities($string [, $quote_style [, $char_set]]) где $string — строка для преобразования, $quote_style — флаг, определяющий, как трактовать символ кавычек (одиночные или двойные), и $char set — строка, представляющая кодовую таблицу, используемую во время преобразования. Возможные значения для параметра $quote_style перечислены в табл. 5.1.
Таблица 5.1. Флаги стиля кавычек для функции htmlentities ()
Флаг Описание
ENT_COMPAT Преобразует только символы двойных кавычек (по умолчанию).
ENT_QUOTES Преобразует символы одиночных и двойных кавычек.
ENT_NOQOUTES Оставляет все символы кавычек как есть.
Функция htmlentities () преобразует и возвращает символы, представленные в $string, в соответствующие HTML-объекты (если это возможно). Например, при выполнении следующего фрагмента кода:
\"Ja'ck & Jill\""); ?>
вывод будет следующим:
Sit;A HREF='foo'>"Jack Samp; Jill"</A>
Иногда нет необходимости преобразовывать все символы, имеющие эквивалентные HTML-объекты, в объектную форму. Обычно существует несколько отдельных символов, которые нужно преобразовать в текст, не интерпретируемый браузером как
HTML-код. Для таких случаев в РНР предусмотрена версия функции htmlentities О ,которая преобразует только следующие символы: &, ", ', < и >. Эта функция называется htmlspecialchars () и имеет следующий синтаксис:
htmlspecialchars($string [, $quote_style [, $char_set]])
Как и в htmlentities (), $string — это строка для преобразования, $quote_style —флаг, определяющий, как будут обрабатываться кавычки (возможные значения представлены в табл. 5.1), и $char_set — кодовая таблица, используемая при преобразовании.
|