Функция htmlspecialchars в PHP


Функция htmlspecialchars() позволяет преобразовать html-теги в специальные сущности. Данная функция используется, главным образом, для преобразования данных, получаемых от пользователя через гостевую книгу, форму обратной связи и т.п.

Синтаксис:

1
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() преобразует следующие специальные символы:

1
2
3
4
5
'&' (амперсанд) преобразуется в '&'
''' (одиночная кавычка) преобразуется в ''' (работает только в режиме ENT_QUOTES).
'"' (двойная кавычка) преобразуется в '"' (будет преобразовано, если не выбран режим  ENT_NOQUOTES ). 
'>' (знак "больше чем") преобразуется в '>'
'<' (знак "меньше чем") преобразуется в '&lt;'

Рассмотрим примеры:

1
2
3
4
5
<?php
$newlink = htmlspecialchars("<a href='somelink'>Link</a>", ENT_QUOTES);
echo $newlink; 
// выведет &lt;a href=&#039;somelink&#039;&gt;Link&lt;/a&gt;
?>

Другой пример:

1
2
3
4
5
<?php
$newmessage = htmlspecialchars("<script>alert('ok');</script>", ENT_QUOTES);
echo $newmessage; 
//выведет &lt;script&gt;alert(&#039;ok&#039;);&lt;/script&gt;
?>




Другие посты

Категория: PHP-скрипты

Оставить комментарий