(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
html_entity_decode — Converte entidades HTML aos seus caracteres correspondentes
$string
, int $flags
= ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding
= null
): string
html_entity_decode() é oposta a
htmlentities() porque converte entidades HTML
na string
aos seus caracteres correspondentes.
Mais precisamente, esta função decodifica todas as entidades (incluindo as numéricas): a) que são necessariamente válidas para o tipo de documento escolhido, isto é, para XML esta função não decodifica entidades nomeadas que possam ser definidas em algum DTD; e b) cujos caracteres estejam no conjunto de caracteres da codificação associados com a codificação escolhida e sejam permitidos no tipo de documento escolhido. Todas as outras entidades ficarão inalteradas.
string
A string de entrada.
flags
Uma máscara de bits de uma ou mais das opções a seguir, que especificam como lidar com aspas e
que tipos de documentos são usados. O padrão é ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
.
Nome da Constante | Descrição |
---|---|
ENT_COMPAT |
Converte aspas duplas e não converte aspas simples. |
ENT_QUOTES |
Converte tanto aspas duplas quanto simples. |
ENT_NOQUOTES |
Não converte aspas duplas ou simples. |
ENT_SUBSTITUTE |
Substitui sequências de unidade de código inválidas com um Caractere de Substituição Unicode U+FFFD (UTF-8) ou � ao invés de retornar uma string vazia. |
ENT_HTML401 |
Lida com o código como HTML 4.01. |
ENT_XML1 |
Lida com o código como XML 1. |
ENT_XHTML |
Lida com o código como XHTML. |
ENT_HTML5 |
Lida com o código como HTML 5. |
encoding
Um argumento opcional que define a codificação usada na conversão de caracteres.
Se omitido, encoding
assume como padrão o valor da
opção de configuração default_charset
.
Embora este argumento seja tecnicamente opcional, especificar o valor correto para o código é altamente recomendável se a opção de configuração default_charset puder ser definida incorretamente para a entrada fornecida.
Os seguintes conjuntos de caracteres são suportados:
Conjunto de caracteres | Apelidos | Descrição |
---|---|---|
ISO-8859-1 | ISO8859-1 | Western European, Latin-1. |
ISO-8859-5 | ISO8859-5 | Conjunto de caracteres cirílicos pouco usado (Latim/Cirílico). |
ISO-8859-15 | ISO8859-15 | Western European, Latin-9. Adiciona o símbolo do Euro, letras Francesas e Filandesas faltando no Latin-1 (ISO-8859-1). |
UTF-8 | Código de multi-byte 8-bit Unicode compatível com ASCII. | |
cp866 | ibm866, 866 | Conjunto de caracteres do DOS específico para o Russo. |
cp1251 | Windows-1251, win-1251, 1251 | Conjunto de caracteres do Windows específico para o Russo. |
cp1252 | Windows-1252, 1252 | Conjunto de caracteres do Windows específico para a Europa Ocidental. |
KOI8-R | koi8-ru, koi8r | Russo. |
BIG5 | 950 | Chinês Tradicional, usado principalmente em Taiwan. |
GB2312 | 936 | Chins Simplificado, conjunto de caracteres padrão nacional. |
BIG5-HKSCS | Big5 com extenções de Hong Kong, Chinês Tradicional. | |
Shift_JIS | SJIS, SJIS-win, cp932, 932 | Japonês |
EUC-JP | EUCJP, eucJP-win | Japonês |
MacRoman | Conjunto de caracteres que era usado pelo Mac OS. | |
'' |
Uma string vazia ativa a detecção a partir de codificação de script (multibyte Zend), conjunto padrão de caracteres e localidade atual (consulte nl_langinfo() e setlocale()), nesta ordem. Não recomendado. |
Nota: Nenhum outro conjunto de caracteres é reconhecido. A codificação padrão será usada no lugar e um alerta será emitido.
Retorna a string decodificada.
Versão | Descrição |
---|---|
8.1.0 |
O padrão de flags mudou de ENT_COMPAT para ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 .
|
8.0.0 |
encoding agora pode ser nulo.
|
Exemplo #1 Decodificando entidades HTML
<?php
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
?>
Nota:
Pode-se perguntar por que trim(html_entity_decode(' ')); não reduz a string a uma string vazia, e isso acontece porque a entidades ' ' não tem código ASCII 32 (que é o código removido por trim()) mas sim 160 (0xa0) na codificação padrão ISO 8859-1.