Удаляет HTML и PHP-теги из строки
Для защиты скрипта от атак из форм и для корректного отображения кода в тексте - работаем со строками.
$tag = strip_tags($tag); // Удалить теги
$tag = htmlspecialchars($tag); // Заменить теги на спец. символы
Функция strip_tags() - удаляет все HTML и PHP теги, можно указать теги, которые удалять не нужно.
<?php
$tag='<a href="https://www.yandex.ru/">Yandex</a> - <b>удалить</b> <i>код</i>';
$tag = strip_tags($tag, '<b>, <i>'); // Удалить теги, кроме b и i
echo $tag;
?>
Выводит: Yandex - удалить код - БЕЗ тегов, кроме <b> и <i>
Во втором аргументе через запятую можно указать теги, которые НЕ удалять. Если второй аргумент не указывать - удаляются все теги.
Функция htmlspecialchars() - переводит все теги в безопасные спец. символы, может иметь второй аргумент - флаг (вариант преобразования).
<?php
$tag='<a href="https://www.yandex.ru/">Yandex</a> - <b>удалить</b> <i>код</i>';
$tag = htmlspecialchars($tag); // Замена тегов на спец. символы
echo $tag;
?>
Выводит: <a href="https://www.yandex.ru/">Yandex</a> - <b>удалить</b> <i>код</i> - т.е теги не срабатывают в браузере, т.к. в них заменены угловые скобки и др.
Производятся следующие преобразования:
- '&' (амперсанд) преобразуется в '&'
- '"' (двойная кавычка) преобразуется в '"' в режиме ENT_NOQUOTES is not set.
- "'" (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
- '<' (знак "меньше чем") преобразуется в '<'
- '>' (знак "больше чем") преобразуется в '>'
Доступные значения параметра flags - второго аргумента
По умолчанию используется ENT_COMPAT | ENT_HTML401.
- ENT_COMPAT Преобразует двойные кавычки, одинарные кавычки не изменяются.
- ENT_QUOTES Преобразует как двойные, так и одинарные кавычки.
- ENT_NOQUOTES Оставляет без изменения как двойные, так и одинарные кавычки.
- ENT_IGNORE Молча отбрасывает некорректные кодовые последовательности вместо возврата пустой строки. Данная возможность предоставляется в целях обратной совместимости, избегайте ее использования, т.к. она может внести уязвимости в ваш код.
- 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 Обработка кода в соответствии с HTML 5.
Еще некоторые функции:
- get_html_translation_table() - Возвращает таблицу преобразований, используемую функциями htmlspecialchars и htmlentities
- htmlspecialchars_decode() - Преобразует специальные HTML-сущности обратно в соответствующие символы
- htmlentities() - Преобразует все возможные символы в соответствующие HTML-сущности
- nl2br() - Вставляет HTML-код разрыва строки перед каждым переводом строки