strip_tags

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

strip_tagsУдаляет HTML- и PHP-теги из строки

Описание

strip_tags(string $string, array|string|null $allowed_tags = null): string

Функция пытается вернуть строку со всеми NULL-байтами, HTML- и PHP-тегами, которые она удалила из заданной строки string. Функция удаляет теги через тот же конечный автомат, что и функция fgetss().

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

string

Входная строка.

allowed_tags

Необязательный второй параметр указывает теги, которые не требуется удалять. Теги указываются как строка (string) или с PHP 7.4.0 — как массив (array). Формата параметра объясняет пример на этой странице.

Замечание:

Функция также удалит HTML-комментарии и PHP-теги. Такое поведение жёстко закодировали и это нельзя изменить через параметр allowed_tags.

Замечание:

Функция игнорирует самозакрывающиеся XHTML-теги наподобие <br/> и только несамозакрывающиеся теги разрешается указывать в аргументе allowed_tags. Например, чтобы разрешить теги <br> и <br/> требуется сделать следующее:

<?php

strip_tags
($input, '<br>');

?>

Возвращаемые значения

Функция возвращает строку без тегов.

Список изменений

Версия Описание
8.0.0 Параметр allowed_tags теперь принимает значение null.
7.4.0 Параметр allowed_tags теперь как альтернативу принимает массив (array).

Примеры

Пример #1 Пример использования функции strip_tags()

<?php

$text
= '<p>Параграф.</p><!-- Комментарий --> <a href="#fragment">Ещё текст</a>';
echo
strip_tags($text);
echo
"\n";

// Разрешаем теги <p> и <a>
echo strip_tags($text, '<p><a>');

// С PHP 7.4.0 строку можно записать так:
// echo strip_tags($text, ['p', 'a']);

?>

Результат выполнения приведённого примера:

Параграф. Ещё текст
<p>Параграф.</p> <a href="#fragment">Ещё текст</a>

Примечания

Внимание

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

Внимание

Иногда неполные теги или теги, которые ломают HTML-разметку, приводят к удалению большего количества текста или данных, чем ожидалось, поскольку функция strip_tags() не проверяет корректность HTML-кода.

Внимание

Эта функция не изменяет атрибуты тегов, которые разрешили через параметр allowed_tags, включая атрибуты style и onmouseover, которыми злонамеренный пользователь злоупотребляет при публикации текста, который страница покажет другим пользователям.

Замечание:

Функция расценит как недопустимые имена тегов во входных HTML-данных, размер которых превышает 1023 байта, независимо от параметра allowed_tags.

Смотрите также

  • htmlspecialchars() - Преобразовывает специальные символы в HTML-сущности