Разница между htmlentities и htmlspecialchars в PHP
В чем разница между функциями htmlentities() и htmlspecialchars() в PHP?
Для начала htmlspecialchars() является подмножеством htmlentities().
В то время как htmlentities преобразует «все применимые символы в HTML-объекты», htmlspecialchars() преобразует только символы ниже:
- ‘&’ (Амперсанд) становится ‘&’
- ‘” ‘(Двойная кавычка) становится‘ " ’, когда ENT_NOQUOTES не установлен.
- «‘ »(Одинарная кавычка) становится‘ '’(или & apos) только в том случае, если установлен ENT_QUOTES.
- ‘<‘ (Меньше чем) становится ‘& lt;’
- ‘>’ (Больше чем) становится ‘& gt;’
как указано в руководстве по PHP.
Обе функции используются для «вывода», чтобы обезопасить веб-страницу от атак с использованием межсайтовых сценариев. Однако в книге Essential PHP Security говорится…
«Htmlentities() - лучшая экранирующая функция для экранирования данных, отправляемых клиенту».
Используйте флаг ENT_QUOTES и кодировку UTF-8, как ниже в примере
htmlentities($userdata, ENT_QUOTES, ‘UTF-8’);
Флаг ENT_QUOTES указывает ему преобразовывать как двойные, так и одинарные кавычки.
И на заметку, параметры двух функций идентичны.