htmlspecialcharsПреобразовывает специальные символы в HTML-сущности
&reftitle.description;
stringhtmlspecialcharsstringstringintflagsENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401stringnullencoding&null;booldouble_encode&true;
Ряд символов в HTML несёт отдельный смысл и для сохранения значения такие
символы представляют HTML-сущностями. Функция возвращает строку с этими
преобразованиями. Вместо этой функции вызывают функцию htmlentities,
когда требуется перевести каждую входную подстроку, у которой есть
связанная именованная сущность.
Если у входной строки, которую передали в эту функцию, и результирующего документа
одинаковый набор символов, то этой функции хватит, чтобы подготовить
входные данные для вставки в бо́льшую часть контекстов HTML-документа. Однако, если
данные содержат символы, которые не закодированы в наборе символов результирующего документа,
и требуется сохранить эти символы (как числовые или именованные сущности),
то как этой функции, так и функции htmlentities (которые
преобразовывают только подстроки, у которых есть эквивалентные именованные сущности),
будет недостаточно. Вместо них пользуются функцией mb_encode_numericentity.
ПреобразованияСимволЗамена& (амперсанд)&" (двойные кавычки)", без флага ENT_NOQUOTES' (одинарные кавычки)' для документов стандарта ENT_HTML401
или '
для документов стандартов ENT_XML1, ENT_XHTML
или ENT_HTML5,
но только с флагом ENT_QUOTES< (меньше)<> (больше)>
&reftitle.parameters;
string
Конвертируемая строка (string).
flags
Битовая маска из следующих флагов, которые определяют, как обрабатывать кавычки,
неправильные последовательности кодовых единиц и тип документа.
Флаги по умолчанию: ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
Доступные значения параметра flagsНазвание константыОписаниеENT_COMPATПреобразовывает двойные кавычки, одинарные кавычки не изменяются.ENT_QUOTESПреобразовывает как двойные, так и одинарные кавычки.ENT_NOQUOTESОставляет без изменения как двойные, так и одинарные кавычки.ENT_IGNORE
Без предупреждения отбрасывает неправильные последовательности кодовых единиц
вместо возврата пустой строки. Передача этого флага не рекомендуется,
поскольку это небезопасно.
ENT_SUBSTITUTE
Заменяет неправильные последовательности кодовых единиц символом замены
Юникода вместо возврата пустой строки: U+FFFD для строк в кодировке UTF-8
и &#FFFD; для строк в других кодировках.
ENT_DISALLOWED
Заменяет неверные кодовые точки для заданного типа документа символом
замены юникода U+FFFD для строк в кодировке UTF-8 или &#FFFD;
для строк в других кодировках вместо того, чтобы оставлять всё как есть.
Это бывает полезно для правильного оформления XML-документов,
в которые встроили внешнее содержимое.
ENT_HTML401
Обрабатывает код по правилам стандарта HTML 4.01.
ENT_XML1
Обрабатывает код по правилам стандарта XML 1.
ENT_XHTML
Обрабатывает код по правилам стандарта XHTML.
ENT_HTML5
Обрабатывает код по правилам стандарта HTML 5.
encoding
&strings.parameter.encoding;
Для целей этой функции кодировки
ISO-8859-1, ISO-8859-15,
UTF-8, cp866,
cp1251, cp1252
и KOI8-R практически эквивалентны, при условии,
что сама строка string содержит допустимые
для заданной кодировки символы, поскольку символы, которые изменяет функция
htmlspecialchars, занимают одинаковые позиции
в перечисленных кодировках.
&reference.strings.charsets;
double_encode
Когда параметр double_encode отключён,
PHP не будет кодировать существующие HTML-сущности.
По умолчанию функция преобразовывает каждый символ.
&reftitle.returnvalues;
Функция возвращает преобразованную строку (string).
Функция вернёт пустую строку, если входная строка string
содержит недопустимую для кодировки encoding последовательность
кодовых единиц, если только не установили флаг ENT_IGNORE
или ENT_SUBSTITUTE.
&reftitle.changelog;
&Version;&Description;8.1.0
Значение по умолчанию для параметра flags
изменили с ENT_COMPAT
на ENT_QUOTES | ENT_SUBSTITUTE
| ENT_HTML401.
&reftitle.examples;
Пример использования функции htmlspecialchars
Test", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
]]>
&reftitle.notes;
Обратите внимание, функция выполняет только описанные преобразования.
Для преобразования всех символов вызывают функцию htmlentities.
Когда значение параметра flags неоднозначно,
функция применяет следующие правила:
Значением по умолчанию становится флаг ENT_NOQUOTES,
если одновременно отсутствуют флаги ENT_COMPAT,
ENT_QUOTES и ENT_NOQUOTES.
Если одновременно присутствуют два или более флага ENT_COMPAT,
ENT_QUOTES и ENT_NOQUOTES,
у флага ENT_QUOTES будет больший приоритет.
Следующим по приоритету будет флаг ENT_COMPAT.
Флагом по умолчанию становится флаг ENT_HTML401,
если не установили ни одну из констант ENT_HTML401, ENT_HTML5,
ENT_XHTML и ENT_XML1.
Если одновременно установили больше одного флага ENT_HTML401,
ENT_HTML5, ENT_XHTML, ENT_XML1,
приоритет будет таким: ENT_HTML5, затем ENT_XHTML,
ENT_XML1, а потом флаг ENT_HTML401.
Если одновременно установили больше одного флага ENT_DISALLOWED,
ENT_IGNORE, ENT_SUBSTITUTE,
высший приоритет будет у флага ENT_IGNORE,
а следующий за ним — у флага ENT_SUBSTITUTE.
&reftitle.seealso;
get_html_translation_tablehtmlspecialchars_decodestrip_tagshtmlentitiesnl2br