Статьи Программирование в PHP

Удаление из строки HTML тегов в PHP

Задача удалять все или только определенные html-теги из строки часто возникает там, где необходимо предоставить возможность любому посетителю страницы, добавлять новую информацию. Самым обычным примером может быть гостевая книга или система комментариев на сайте. Добавляемый таким образом текст может содержать множество различных тегов, добавленных случайно при копировании текста или намеренно, чтобы внести сообщение как-то "очень оригинально". Стоит отметить так же и злонамеренные попытки внести на сайт вредоносный код в тегах script или попытку испортить верстку страницы лишними тегами.

В любом из перечисленных случаев, возникает необходимость перед записью новой информации, очищать ее от лишних html-тегов.

Полная очистка текста от html-тегов

Часто для таких задач используются регулярные выражения, однако в этой статье рассмотрим самый простой метод – удаление тегов с помощью php-функции strip_tags. Эта функция просто удаляет теги из указанной в параметре строки.

Пример:

$str_in = "<p>Мой <b>текст</b> с <i>различными</i> <a href='http://space-base.ru/'>тегами</a>.</p>";
$str_out = strip_tags($str_in);
echo $str_out;

В результате такой обработки в переменной $str_out получим строку без тегов:

Мой текст с различными тегами.

* Стоит обратить внимание, что функция strip_tags убирает только сами теги, оставляя их содержимое между открывающим и закрывающим тегом.

Удаление отдельных html-тегов из текста

Иногда нужно убрать только определенные теги из строки. Здесь мы так же воспользуемся функцией strip_tags, но в этот раз вторым (необязательным) параметром укажем теги, которые нужно сохранить.

Например, при обработке строки, нужно оставить только ссылки:

$str_in = "<p>Мой <b>текст</b> с <i>различными</i> <a href='http://space-base.ru/'>тегами</a>.</p>";
$str_out = strip_tags($str_in, '<a>');
echo $str_out;

В результате такой обработки в переменной $str_out получим:

Мой текст с различными <a href='http://space-base.ru/'>тегами</a>.

Таким образом, можно указать все теги, которые допустимы в строке, тогда как все остальные будут удалены.


В данной статье рассмотрен самый простой способ очистки строки от тегов. Рассматривая другие варианты, я буду расширять эту статью. Буду рад, если Вы предложите свои варианты решения этой задачи в комментариях или по электронной почте.


Комментарии

Имя:
Текст комментария:
* В комментариях запрещено публиковать рекламные объявления. Сообщения, содержащие ссылки на сторонние ресурсы добавляется в скрытом режиме. Они будут открыты, если не нарушают установленных правил, после проверки.
Защита от спам-роботов (* Обязателельно укажите ответ на простой вопрос ниже.)
Сколько ножек у трeхногого табурета? (цифра)