htmlspecialchars

(PHP 4, PHP 5, PHP 7, PHP 8)

htmlspecialchars - Перетворює спеціальні символи в HTML-сутності

Опис

htmlspecialchars(    string $string,    int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,    ?string $encoding = null,    bool $double_encode = true): string

У HTML деякі символи мають особливий зміст і мають бути представлені у вигляді HTML-сутностей, щоб зберегти їх значення. Ця функція повертає рядок, над яким проведено ці перетворення. Якщо вам потрібно перетворити всі можливі сутності, використовуйте htmlentities()

Якщо вхідний рядок, переданий у цю функцію та результуючий документ, використовують однакове кодування символів, то цієї функції достатньо, щоб підготувати дані для вставки в більшість частин HTML-документа. Однак, якщо дані містять символи, не визначені в кодуванні символів результуючого документа і ви очікуєте збереження цих символів (як числові або іменовані сутності), то вам буде недостатньо цієї і htmlentities() функцій (які лише перетворюють підрядки з відповідними сутностями). Необхідно використовувати функцію mb_encode_numericentity()

Виробляються такі перетворення

СимволЗамена
& (амперсанд)&
" (подвійні лапки)", якщо не встановлено ENT_NOQUOTES
' (одинарні лапки)'(для**ENT_HTML401) или'(дляENT_XML1** ENT_XHTML або ENT_HTML5), але тільки якщо встановлена ENT_QUOTES
< (менше)&lt;
> (більше)&gt;

Список параметрів

string

Конвертований рядок (string).

flags

Бітова маска з вказаних нижче прапорів, що визначають режим обробки лапок, некоректних кодових послідовностей і тип документа, що використовується. За замовчуванням використовується ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401

Доступні значення параметра flags

Название константыОпис
ENT_COMPATПеретворює подвійні лапки, одинарні лапки не змінюються.
ENT_QUOTESПеретворює як подвійні, і одинарні лапки.
ENT_NOQUOTESЗалишає без зміни як подвійні, так і одинарні лапки.
ENT_IGNOREБез будь-яких повідомлень відкидає некоректні кодові послідовності замість повернення порожнього рядка. Використання цього прапора не рекомендується, оскільки це може призвести до » негативних наслідків, пов'язаних з безпекою
ENT_SUBSTITUTEЗамінює некоректні кодові послідовності символом заміни Юнікоду U+FFFD у разі використання UTF-8 або при використанні іншого кодування, замість повернення порожнього рядка.
ENT_DISALLOWEDЗамінює неправильні коди символів для заданого типу документа символом заміни юнікоду U+FFFD (UTF-8) або (при використанні іншого кодування) замість того, щоб залишати все як є. Це може бути корисним, наприклад, для того, щоб переконатися у формальній правильності XML-документів із вбудованим зовнішнім контентом.
ENT_HTML401Обробка коду відповідно до HTML 4.01.
ENT_XML1Обробка коду відповідно до XML 1.
ENT_XHTMLОбробка коду відповідно до XHTML.
ENT_HTML5Обробка коду відповідно до HTML 5.

encoding

Необов'язковий аргумент, що визначає кодування, яке використовується при конвертації символів.

Если не указан, то значение по умолчанию дляencoding залежить від конфігураційної опції default_charset

Хоча цей аргумент є технічно необов'язковим, рекомендується вказати правильне значення для вашого коду, опція конфігурації default_charset може бути задана неправильно для вхідних даних.

Для цілей цієї функції кодування ISO-8859-1 ISO-8859-15 UTF-8 cp866 cp1251 cp1252иKOI8-R є практично еквівалентними, припускаючи те, що сам рядок string містить коректні символи у зазначеному кодуванні, то символи, що змінюються htmlspecialchars(), залишаться на тих же місцях у всіх цих кодуваннях.

Підтримуються такі кодування:

Підтримувані кодування

КодировкаПсевдонимыОпис
ISO-8859-1ISO8859-1Західноєвропейська Latin-1.
ISO-8859-5ISO8859-5Рідко використовуване кириличне кодування (Latin/Cyrillic).
ISO-8859-15ISO8859-15Західноєвропейська Latin-9. Додає символ євро, французькі та фінські літери до кодування Latin-1 (ISO-8859-1).
UTF-88-бітна Unicode, сумісна з ASCII.
cp866ibm866, 866Кирилічна кодування, що застосовується в DOS.
cp1251Windows-1251, win-1251, 1251Кирилічна кодування, що використовується у Windows.
cp1252Windows-1252, 1252Західно-європейське кодування, що використовується у Windows.
KOI8-Rkoi8-ru, koi8rРосійське кодування.
BIG5950Традиційний китайський, застосовується переважно на Тайвані.
GB2312936Спрощена китайська, стандартне національне кодування.
BIG5-HKSCSРозширена Big5, що застосовується в Гонконгу.
Shift_JISSJIS, SJIS-win, cp932, 932Японське кодування.
EUC-JPEUCJP, eucJP-winЯпонське кодування.
MacRomanКодування, яке використовується в Mac OS.
''Порожній рядок активує режим визначення кодування із файлу скрипта (Zend multibyte), default_charset та поточної локалі (дивіться nl_langinfo() і setlocale()) у зазначеному порядку. Не рекомендується використовувати.

Зауваження: Інші кодування не підтримуються, замість них буде застосовано кодування за замовчуванням та згенеровано попередження.

double_encode

Якщо параметр double_encode вимкнений, то PHP не перетворюватиме існуючі html-сутності. За замовчуванням все перетворюється без обмежень.

Значення, що повертаються

Перетворений рядок (string).

Якщо вхідний рядок string містить неправильну послідовність символів у зазначеному кодуванні encoding, то повертатиметься порожній рядок у випадку, якщо прапори ENT_IGNORE або ENT_SUBSTITUTE не встановлені.

список змін

ВерсияОпис
8.1.0Значення за промовчанням flags змінено з ENT_COMPATнаENT_QUOTES

Приклади

Приклад #1 Приклад використання htmlspecialchars()****

Loading...

Примітки

Зауваження :

Зверніть увагу, що функція не робить інших перетворень, крім описаних вище. Для перетворення всіх HTML-сутностей використовуйте htmlentities()

Зауваження :

У разі неоднозначного значення flags, застосовуються такі правила:

  • Якщо одночасно відсутні константи**ENT_COMPAT** ENT_QUOTES і ENT_NOQUOTES, за умовчанням буде використовуватися**ENT_NOQUOTES**
  • Якщо одночасно присутні дві або більше констант**ENT_COMPAT** ENT_QUOTES і ENT_NOQUOTES ENT_QUOTESматиме більший пріоритет. Наступна за пріоритетом будеENT_COMPAT
  • Якщо немає жодної з констант**ENT_HTML401** ENT_HTML5 ENT_XHTML і ENT_XML1, за умовчанням буде використовуватися**ENT_HTML401**
  • Якщо одночасно присутні дві або більше констант**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**

Дивіться також

  • get_html_translation_table() - Повертає таблицю перетворень, використовувану функціями htmlspecialchars і htmlentities
  • htmlspecialchars_decode() - Перетворює спеціальні HTML-сутності назад на символи
  • strip_tags() - Видаляє теги HTML та PHP з рядка
  • htmlentities() - Перетворює всі можливі символи у відповідні HTML-сутності
  • nl2br() - Вставляє HTML код розриву рядка перед кожним перекладом рядка