Как работает htmlspecialchars?

В документации написано, что функция преобразует символы в HTML сущности.

Как это понимать?


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

Автор решения: Данил

htmlspecialchars преобразует html-код в текст.

Например:

было: Hello
стало: <.b>Hello<./b> (без точек)

→ Ссылка
Автор решения: Denis640Kb

htmlspecialchars является достаточно полезной функцией в PHP.

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

echo = "<div><a href='https://ru.stackoverflow.com/'>Stackoverflow</a></div>";

или:

print_r("<div><a href='https://ru.stackoverflow.com/'>Stackoverflow</a></div>");

В обоих этих случаях вывод данных выглядит так:

введите сюда описание изображения

В данном случае, теги HTML преобразуются и мы видим только их результат, а именно ссылку.

Иногда бывает необходимость вывести данные вместе с самой разметкой HTML.

В этом случае мы и используем функцию htmlspecialchars.
Она помогает преобразовать символы разметки в код, который можно отобразить, не выполняя эту часть разметки.

К примеру, делая запись таким способом:

$new = htmlspecialchars("<div><a href='https://ru.stackoverflow.com/'>Stackoverflow</a></div>", ENT_QUOTES);
print_r($new);

Увидите вывод данных с теми метками, которые были указаны: введите сюда описание изображения

Как видите, данные выводятся ровно в том виде, в котором они записаны, без преобразования тегов HTML.

Если чуть подробнее, то преобразуются данные подобным образом:

'&' (амперсанд) преобразуется в '&'

'"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.

''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.

'<' (знак "меньше чем") преобразуется в '<'

'>' (знак "больше чем") преобразуется в '>'

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

Для более подробной информации - офф. мануал.

→ Ссылка