Функция htmlspecialchars() позволяет преобразовать html-теги в специальные сущности. Данная функция используется, главным образом, для преобразования данных, получаемых от пользователя через гостевую книгу, форму обратной связи и т.п.
Синтаксис:
string htmlspecialchars ( string string [, int quote_style [, string charset]] )
Главный и обязательный аргумент для функции – это исходная строка string.
Второй необязательный аргумент quote_style определяет, как должны быть преобразованы кавычки. Его возможные значения:
ENT_COMPAT – оставляет без изменений одиночные кавычки и преобразует двойные кавычки, ENT_QUOTES – будут преобразованы и двойные и одинарные кавычки
ENT_NOQUOTES – любые кавычки остаются без изменений
Если вы не указываете параметр quote_style, то по умолчанию его значение будет соответствовать ENT_COMPAT.
В версии PHP 5.4 также добавлены новые параметры:
ENT_SUBSTITUTE – Заменит некорреткные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; (если используется другая кодировка), вместо возврата пустой строки.
ENT_DISALLOWED – заменяет неверные коды символов символом замены юникода U+FFFD (UTF-8) или &#FFFD (если используется другая кодировка).
ENT_HTML401 – обработает код в соответствии с HTML 4.01.
ENT_XML1 – обработает код в соответствии с XML 1
ENT_XHTML – обработает код в соответствии с XHTML
ENT_HTML5 – обработает код в соответствии с HTML5
В версии 5.3 добавлен параметр ENT_IGNORE (отбросит все некорректные участки кода, вместо возврата пустой строки).
Третий аргумент charset также является необязательным и определяет кодировку, в которой будет происходить преобразование. До версии php 5.4 кодировкой по умолчанию является ISO-8859-1. Начиная с версии 5.4.0 кодировка по умолчанию UTF-8.
Функция htmlspecialchars() преобразует следующие специальные символы:
'&' (амперсанд) преобразуется в '&'
''' (одиночная кавычка) преобразуется в ''' (работает только в режиме ENT_QUOTES).
'"' (двойная кавычка) преобразуется в '"' (будет преобразовано, если не выбран режим ENT_NOQUOTES ).
'>' (знак "больше чем") преобразуется в '>'
'<' (знак "меньше чем") преобразуется в '<'
Рассмотрим примеры:
<?php
$newlink = htmlspecialchars("<a href='somelink'>Link</a>", ENT_QUOTES);
echo $newlink;
// выведет <a href='somelink'>Link</a>
?>
Другой пример:
<?php
$newmessage = htmlspecialchars("<script>alert('ok');</script>", ENT_QUOTES);
echo $newmessage;
//выведет <script>alert('ok');</script>
?>