Htmlspecialchars decode: примеры (PHP)
htmlspecialchars_decode(string $string, int $flags = ENT_COMPAT | ENT_HTML401): stringОписание функции htmlspecialchars_decode
Функция htmlspecialchars_decode в PHP предназначена для преобразования специальных HTML-сущностей обратно в соответствующие символы. Это обратная операция для функции htmlspecialchars. Использование функции актуально при выводе ранее экранированных данных, когда требуется восстановить исходные символы для дальнейшей обработки или безопасного отображения в определённых контекстах.
- string
$string- обязательный параметр, строка, содержащая HTML-сущности для преобразования. - int
$flags- необязательный параметр, определяющий правила обработки кавычек и тип документа. По умолчаниюENT_COMPAT | ENT_HTML401. Возможные значения:ENT_COMPAT- преобразует двойные кавычки, оставляет одинарные без изменений.ENT_QUOTES- преобразует и двойные, и одинарные кавычки.ENT_NOQUOTES- не преобразует кавычки.ENT_HTML401- обработка для HTML 4.01.ENT_XML1- обработка для XML 1.ENT_XHTML- обработка для XHTML.ENT_HTML5- обработка для HTML5.
- string|null
$encoding- необязательный параметр, задающий кодировку. Начиная с PHP 8.0.0, значение по умолчаниюnullозначает использование внутренней кодировки (default_charset).
Примеры использования htmlspecialchars_decode
Преобразование основных сущностей.
<?php
$str = "<a href='test'>link</a>";
echo htmlspecialchars_decode($str);
?><a href='test'>link</a>
<?php
$str = "<a href='test'>link</a>";
echo htmlspecialchars_decode($str, ENT_QUOTES);
?><a href='test'>link</a>
<?php
$str = ""Hello" & 'World'";
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>"Hello" & 'World'
Похожие функции в PHP
Функция html_entity_decode преобразует все HTML-сущности, а не только специальные. Она полезна, когда требуется декодировать широкий спектр сущностей, например, символы Unicode.
Функция strip_tags удаляет HTML и PHP-теги из строки. Она применяется, когда необходимо полностью удалить разметку, а не преобразовывать сущности. Функция не восстанавливает символы из сущностей.
Функцию htmlspecialchars_decode используют для обратного преобразования сущностей, созданных функцией htmlspecialchars. Если исходные данные были обработаны через htmlentities, то применяют html_entity_decode. Для удаления разметки подходит strip_tags.
Аналоги в других языках
Htmlspecialchars decode в Python
В языке Python функция html.unescape() из модуля html выполняет аналогичные действия.
import html
str = "<a href='test'>link</a>"
print(html.unescape(str))<a href='test'>link</a>
Htmlspecialchars decode в Javascript
В JavaScript для преобразования HTML-сущностей используют свойство innerHTML элемента или функцию he.decode из библиотеки he.
const str = "<a href='test'>link</a>";
const textArea = document.createElement('textarea');
textArea.innerHTML = str;
console.log(textArea.value);<a href='test'>link</a>
Htmlspecialchars decode в MySQL
В языке SQL прямой аналогичной функции не существует. Обычно преобразование выполняют на стороне приложения. Возможно использование функции REPLACE для замены конкретных сущностей, но это не универсальное решение.
Типичные ошибки
Неоднократный вызов функции приводит к непредвиденным результатам.
<?php
$str = "&lt;";
echo htmlspecialchars_decode(htmlspecialchars_decode($str));
?><
Использование флага, не соответствующего способу первоначального экранирования.
<?php
$str = "'test'";
// Если исходное преобразование использовало ENT_QUOTES
// А декодирование — ENT_COMPAT
$result = htmlspecialchars_decode($str, ENT_COMPAT);
echo $result;
?>'test'
Несоответствие кодировки может привести к некорректному преобразованию символов.
Изменения в PHP
Параметр encoding стал необязательным. Значение по умолчанию изменено на null, что приводит к использованию внутренней кодировки. Функция теперь возвращает пустую строку при передаче неверной кодировки, вместо выдачи предупреждения.
Добавлены константы ENT_HTML401, ENT_XML1, ENT_XHTML и ENT_HTML5.
Расширенные примеры
Функция применяется ко всем элементам массива.
<?php
$data = [
'title' => "<h1>Title</h1>",
'desc' => "&copy; 2023"
];
$decoded = array_map('htmlspecialchars_decode', $data);
print_r($decoded);
?>Array
(
[title] => <h1>Title</h1>
[desc] => © 2023
)Очистка строки с последующим преобразованием.
<?php
$str = " <p>Text</p> ";
$result = htmlspecialchars_decode(trim($str));
echo $result;
?><p>Text</p>
<?php
$str = "<section>&ndash;content</section>";
echo htmlspecialchars_decode($str, ENT_QUOTES | ENT_HTML5);
?><section>–content</section>
<?php
$text = "<pre>Line 1
Line 2</pre>";
echo htmlspecialchars_decode($text);
?><pre>Line 1 Line 2</pre>
<?php
$json = '{"text": "<div>Test</div>"}';
$data = json_decode($json, true);
$data['text'] = htmlspecialchars_decode($data['text']);
echo $data['text'];
?><div>Test</div>
PHP htmlspecialchars_decode function comments
- Php htmlspecialchars decode - аргументы и возвращаемое значение
- Функция php htmlspecialchars_decode - описание
- htmlspecialchars decode - примеры
- htmlspecialchars decode - похожие методы на php
- htmlspecialchars_decode на js, python, mysql
- htmlspecialchars decode изменения php
- Примеры htmlspecialchars_decode на php