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.
Типичные ошибки
Неоднократный вызов функции приводит к непредвиденным результатам.
<?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>
Аналоги в других языках
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 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