Разница между htmlentities() и htmlspecialchars() в PHP
В чем разница между htmlspecialchars() и htmlentities()? Когда следует использовать одну функцию вместо другой?
4 ответ(ов)
Это кодируется с помощью htmlentities.
Используя следующий код:
implode( "\t", array_values( get_html_translation_table( HTML_ENTITIES ) ) )
Вы получите таблицу символов, которая включает в себя:
" & < >
¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë
Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Œ
œ Š š Ÿ ƒ ˆ ˜ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ
υ φ χ ψ ω ϑ ϒ ϖ – — ‘ ’ ‚ “ ” „ † ‡ • … ‰ ′ ″ ‹ › ‾ ⁄ € ℑ ℘ ℜ ™ ℵ ← ↑ → ↓ ↔ ↵ ⇐ ⇑ ⇒ ⇓ ⇔
∀ ∂ ∃ ∅ ∇ ∈ ∉ ∋ ∏ ∑ − ∗ √ ∝ ∞ ∠ ∧ ∨ ∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥ ⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ ⋅ ⌈ ⌉ ⌊ ⌋ ⟨
⟩ ◊ ♠ ♣ ♥ ♦
Это кодируется с помощью htmlspecialchars.
Используя следующий код:
implode( "\t", array_values( get_html_translation_table( HTML_SPECIALCHARS ) ) )
Вы получите:
" & < >
Таким образом, разница между htmlentities и htmlspecialchars заключается в том, что первый кодирует все существующие HTML-символы, тогда как второй кодирует только специальные символы HTML.
Поскольку:
- Иногда вы пишете данные в формате XML, и в XML файле вы не можете использовать HTML-сущности.
- Функция
htmlentitiesзаменяет больше символов, чемhtmlspecialchars. Это избыточно, усложняет PHP-скрипт и делает результирующий HTML-код менее читаемым.
Использовать htmlentities необходимо только в том случае, если ваши страницы используют кодировки такие как ASCII или LATIN-1, и вы обрабатываете данные с кодировкой, отличной от кодировки страницы.
Функция htmlspecialchars() выполняет минимальное количество кодирования, чтобы гарантировать, что ваша строка не будет интерпретироваться как HTML. В результате ваша строка остаётся более читаемой для человека, чем в случае использования htmlentities(), которая кодирует абсолютно все символы, нуждающиеся в кодировании.
htmlentities и htmlspecialchars — это функции PHP, которые используются для преобразования специальных символов в HTML-сущности, чтобы предотвратить XSS-атаки и корректно отображать данные в браузере.
htmlentities: эта функция преобразует все применимые символы в HTML-сущности. Например, она заменяет символы&,",',<, и>на их соответствующие сущности:&на&,"на", и так далее. Это полезно, когда вам нужно отобразить текст, который может содержать HTML-код, а не исполнять его.htmlspecialchars: эта функция более ограниченная и преобразует только определенные символы, такие как&,",',<, и>. Она часто используется, когда необходимо экранировать текст для безопасного отображения внутри HTML-атрибутов.
При использовании htmlspecialchars, если флаг ENT_NOQUOTES не установлен, двойные кавычки " преобразуются в ", а одиночные кавычки ' преобразуются в ' (или не преобразуются вовсе, если установлен флаг ENT_QUOTES). Если вам не нужны кавычки, вы можете использовать флаг ENT_NOQUOTES.
Вот как происходят преобразования:
'&'(амперсанд) становится&'"'(двойная кавычка) становится"(еслиENT_NOQUOTESне установлен)"'(одинарная кавычка) становится'(или', если установленENT_QUOTES)'<'(меньше) становится<'>'(больше) становится>
Вы можете ознакомиться с дополнительной информацией о htmlentities и htmlspecialchars, просмотрев данный код по ссылке: gist.github.com.
Функции startsWith() и endsWith() в PHP
Как получить расширение файла в PHP?
Как читать большой файл построчно?
ReCaptcha 2.0 с использованием AJAX
Почему нельзя вызывать абстрактные функции из абстрактных классов в PHP?