html_entity_decode

(PHP 4 >= 4.3.0)

html_entity_decode --  Converte todas as entidades HTML para os seus caracteres

Descrição

string html_entity_decode ( string string [, int quote_style [, string charset]])

html_entity_decode() é o oposto da função htmlentities() no que converte todas as entidades HTML para os seus caracteres de string.

O segundo parâmetro, que é opcional, quote_style permite você definir o que será feito com 'apostrofos' e "aspas". Ele recebe uma constante entre três, sendo o padrão ENT_COMPAT:

Tabela 1. Constantes disponíveis para quote_style

Nome da ConstanteDescrição
ENT_COMPATIrá converter aspas e deixar os apostrofos.
ENT_QUOTESIrá converter ambos.
ENT_NOQUOTESIrá deixar ambos sem converter.

O conjunto de caracteres ISO-8859-1 é usado como padrão para o terceiro parâmetro, que é opcional, charset. Este defini o conjunto de caracteres usado na conversão.

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 &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now


// Para versões anteriores ao PHP 4.3.0 você deve fazer isto:
function unhtmlentities ($string)
{
    $trans_tbl = get_html_translation_table (HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    return strtr ($string, $trans_tbl);
}

$c = unhtmlentities($a);

echo $c; // I'll "walk" the <b>dog</b> now

?>

Nota: Você deve imaginar porque trim(html_entity_decode('&nbsp;')); não reduz a string para uma string vazia, isto é porque a entidade '&nbsp;' não é o código ASCII 32 (o qual é retirado por trim()) mas o caracter ASCII 160 (0xa0) no conjunto de caracteres padrão.

Veja também htmlentities(), htmlspecialchars(), get_html_translation_table(), htmlspecialchars() e urldecode().