Функция strip_tags удаляет текст треугольных скобках, не только теги. Как этого избежать?

Использую strip_tags чтобы в некоторых местах сайта убирать <html> тэги из оформления текста.

Но он вырезает обычный текст в <> скобках.

Вопрос: можно-ли как-то экранировать эти скобки, чтобы strip_tags не удалял их или возможно есть какое-то другое свойство, которое скроет html теги из текста и не применит html теги к оформлению текста.

Возможно как-то через str_replace

Например:

Пользователь вводит:
<h1 style="color:red;">Классный туториал</h1><br>по основам <!html>

На одну страницу, должно вывестись следующее:
Классный туториал
по основам <!html>
(с оформлением HTML соотвественно)

А на другой странице вот так:
Классный туториал по основам <!html>

Без HTML оформления и без вывода html тэгов в строк, но текст в скобках должен остаться.

Ответы (1 шт):

Автор решения: sanmai

Чтобы strip_tags не удалял текст в угловых скобках, они должны быть проэкранированы в исходном тексте. Для этого < нужно заменить на &lt;, а > на &gt;.

Сделать такую замену за вас может функция htmlspecialchars. Но она заменит все-все вхождения таких скобок, потому скобки нужно заменять в исходном тексте. Это не какая-то прихоть PHP, такого отношения требует сам HTML.

→ Ссылка