W3docs

html_entity_decode()

Artigo sobre a função PHP html_entity_decode(), usada para converter entidades HTML nos seus caracteres correspondentes.

A função PHP html_entity_decode() converte entidades HTML (como &lt;, &amp; ou &copy;) de volta para os seus caracteres correspondentes (<, &, ©). É o inverso de htmlentities(), e é a função utilizada quando você precisa transformar HTML já codificado de volta em texto legível — por exemplo, ao ler dados que foram armazenados em formato codificado, ou ao processar a saída de um sistema que escapou o seu HTML.

Esta página explica a sintaxe, cada parâmetro, os flags que controlam como as aspas são tratadas, e os erros comuns (especialmente em relação à segurança).

Sintaxe

html_entity_decode(
    string $string,
    int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
    ?string $encoding = null
): string
ParâmetroObrigatórioDescrição
$stringSimA string de entrada contendo as entidades HTML a decodificar.
$flagsNãoUma máscara de bits que controla quais aspas são decodificadas e qual tipo de documento é assumido.
$encodingNãoA codificação de caracteres da entrada. O padrão é a configuração ini default_charset (UTF-8 no PHP moderno).

A função retorna a string decodificada. Desde o PHP 8.1, o padrão para $flags é ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401; versões mais antigas usavam ENT_COMPAT | ENT_HTML401 como padrão.

Exemplo básico

php— editable, runs on the server

As entidades &lt; e &gt; são convertidas de volta para < e >, portanto a saída é:

<h1>Hello World</h1>

Controlando aspas com $flags

O parâmetro $flags determina como as aspas simples e duplas são tratadas:

FlagDecodifica
ENT_COMPATApenas aspas duplas
ENT_QUOTESAspas simples e duplas
ENT_NOQUOTESNem aspas simples nem duplas

Adicione ENT_HTML401, ENT_HTML5, ENT_XML1 ou ENT_XHTML para escolher o conjunto de entidades, e ENT_SUBSTITUTE/ENT_IGNORE para controlar como sequências de bytes inválidas são tratadas. Use ENT_QUOTES quando a entrada pode conter aspas simples codificadas (&#039; / &apos;):

php— editable, runs on the server

Com ENT_QUOTES, tanto as tags quanto a aspa simples codificada são restauradas:

<p>I'm a paragraph</p>

Especificando a codificação de caracteres

O terceiro parâmetro, $encoding, informa ao PHP como interpretar os bytes de entrada. O padrão é a sua configuração ini default_charset. Passe-o explicitamente quando não puder confiar nesse padrão — na maioria das vezes "UTF-8":

php— editable, runs on the server

ENT_HTML5 permite que o PHP reconheça o conjunto completo de entidades HTML5 nomeadas, portanto &eacute; e &amp; são decodificados para:

Café & Co.

Segurança: não decodifique antes de exibir

html_entity_decode() é o oposto do escape. Decodificar conteúdo fornecido pelo usuário e depois imprimi-lo em uma página reintroduz quaisquer tags <script> ou atributos que o escape havia removido, abrindo uma brecha XSS. Decodifique apenas quando precisar dos caracteres brutos para fins não relacionados ao HTML (registro de logs, comparação, geração de versão em texto simples, criação de um PDF, etc.). Ao exibir em HTML, mantenha os dados escapados.

Funções relacionadas

  • htmlentities() — o inverso: converte caracteres em entidades HTML.
  • htmlspecialchars() — escapa apenas os cinco caracteres especiais do HTML (<, >, &, ", ').
  • htmlspecialchars_decode() — inverte htmlspecialchars(); mais rápido que html_entity_decode() quando você só precisa recuperar esses cinco caracteres.

html_entity_decode() lida com o conjunto completo de entidades nomeadas, portanto use-a quando a entrada pode conter entidades como &copy; ou &eacute;; use htmlspecialchars_decode() quando a saída foi produzida apenas com htmlspecialchars().

Prática

Prática
O que a função `html_entity_decode()` faz no PHP?
O que a função `html_entity_decode()` faz no PHP?
Was this page helpful?