Вы здесь: Главная > Основы разработки сайта > Основы PHP > 46 урок - Функция htmlentities - Преобразуем все возможные символы в соответствующие HTML-сущности

Основы PHP

46 урок - Функция htmlentities - Преобразуем все возможные символы в соответствующие HTML-сущности

Функция htmlentities — Преобразует все возможные символы в соответствующие HTML-сущности. Эта функция идентична htmlspecialchars()  рассмотренной в прошлом уроке за исключением того, что htmlentities() преобразует все символы всоответствющие HTML-сущности (для тех символов, для которых HTML сущности существуют).

В большинстве случаев достаточно рассмотренной ранее функции htmlspecialchars(). Но вы и функцию htmlentities должны знать. 

Синтаксис функции:

 
htmlentities  ( входная строка, [flags - название константы ]  )
 

Константы бывают:

ENT_COMPAT - Преобразует двойные кавычки, одинарные кавычки не изменяются.

ENT_QUOTES - Преобразует как двойные, так и одинарные кавычки.

ENT_NOQUOTES - Оставляет без изменения как двойные, так и одинарные кавычки.

ENT_IGNORE - Молча отбрасывает некорректные кодовые последовательности вместо возврата пустой строки. Данная возможность предоставляется в целях обратной совместимости, избегайте ее использования, т.к. она может внести уязвимости в ваш код.

ENT_SUBSTITUTE - Заменяет некорреткные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки, вместо возврата пустой строки.

ENT_DISALLOWED - Заменяет кодовые последовательности, несоответствующие указанному типу документа символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки.

ENT_HTML401 - Обработка кода в соответствии с HTML 4.01.

ENT_XML1 - Обработка кода в соответствии с XML 1.

ENT_XHTML - Обработка кода в соответствии с XHTML.

ENT_HTML5 - Обработка кода в соответствии с HTML 5.

 

Важный момент, если параметр не указать, то по-умолчанию будет ENT_COMPAT

ENT_IGNORE — работает начиная с php 5.3

ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML и ENT_HTML5 — работают начиная с php 5.4

Рассмотрим функцию на примере:

<?php
$new = htmlentities("<a href='url'>Test</a>", ENT_QUOTES);
 
// &lt;a href=&#039;url&#039;&gt;Test&lt;/a&gt;
echo $new;
?>

Заметьте что в браузере выдаст

 <a href='url'>Test</a> 

А если вы посмотрите HTML-код страницы, то увидите.

 &lt;a href=&#039;url&#039;&gt;Test&lt;/a&gt;

Если без использования функции вывести -  выведет обычную рабочую ссылку.  Также бы и вывел работающий зловредный код. Иногда необходимо раскодировать строку чтобы посмотреть что там. Для этого есть функция html_entity_decode. О ней мы поговорим в следующем уроке.