Функция strip_tags удаляет текст треугольных скобках, не только теги. Как этого избежать?
Использую strip_tags чтобы в некоторых местах сайта убирать <html> тэги из оформления текста.
Но он вырезает обычный текст в <> скобках.
Вопрос: можно-ли как-то экранировать эти скобки, чтобы strip_tags не удалял их или возможно есть какое-то другое свойство, которое скроет html теги из текста и не применит html теги к оформлению текста.
Возможно как-то через str_replace
Например:
Пользователь вводит:
<h1 style="color:red;">Классный туториал</h1><br>по основам <!html>
На одну страницу, должно вывестись следующее:
Классный туториал
по основам <!html>
(с оформлением HTML соотвественно)
А на другой странице вот так:
Классный туториал по основам <!html>
Без HTML оформления и без вывода html тэгов в строк, но текст в скобках должен остаться.
Ответы (1 шт):
Чтобы strip_tags не удалял текст в угловых скобках, они должны быть проэкранированы в исходном тексте. Для этого < нужно заменить на <, а > на >.
Сделать такую замену за вас может функция htmlspecialchars. Но она заменит все-все вхождения таких скобок, потому скобки нужно заменять в исходном тексте. Это не какая-то прихоть PHP, такого отношения требует сам HTML.