(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
html_entity_decode — Convierte las entidades HTML a sus caracteres correspondientes
$string, int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $encoding = null): string
html_entity_decode() es la función contraria de
htmlentities(): convierte las entidades HTML de
la cadena string a sus caracteres correspondientes.
De manera más explícita, esta función decodifica todas las entidades (incluyendo las entidades numéricas) que 1) son necesariamente válidas para el tipo de documento seleccionado - es decir, para XML, esta función no decodifica las entidades nombradas que pueden estar definidas en una DTD - y 2) cuyo carácter o caracteres están en el juego de caracteres codificado con la codificación elegida y están permitidos en el tipo de documento seleccionado. Todas las demás entidades se dejan tal cual.
stringLa cadena de entrada.
flags
Una máscara de uno o varios flag siguientes, que especifican la forma
en que deben ser gestionadas las comillas y qué tipo de documento debe ser utilizado.
Por omisión, es ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
| Constante | Descripción |
|---|---|
ENT_COMPAT |
Convierte las comillas dobles e ignora las comillas simples. |
ENT_QUOTES |
Convierte las comillas dobles y las comillas simples. |
ENT_NOQUOTES |
No convierte ninguna comilla. |
ENT_SUBSTITUTE |
Reemplaza las secuencias de código no válidas con un carácter de reemplazo Unicode U+FFFD (UTF-8) o &#FFFD; (de lo contrario) en lugar de devolver una cadena vacía. |
ENT_HTML401 |
Gestiona el código como HTML 4.01. |
ENT_XML1 |
Gestiona el código como XML 1. |
ENT_XHTML |
Gestiona el código como XHTML. |
ENT_HTML5 |
Gestiona el código como HTML 5. |
encodingencoding
es el valor de la opción de configuración
default_charset.
Aunque este argumento es técnicamente opcional, se recomienda encarecidamente
especificar el valor correcto para su código si la opción de configuración
default_charset
ha sido definida incorrectamente para la entrada proporcionada.
Están soportados los siguientes juegos de caracteres:
| Juego de caracteres | Alias | Descripción |
|---|---|---|
| ISO-8859-1 | ISO8859-1 | Europeo occidental, Latin-1. |
| ISO-8859-5 | ISO8859-5 | Juego de caracteres cirílicos poco usado (Latin/Cyrillic). |
| ISO-8859-15 | ISO8859-15 | Europeo occidental, Latin-9. Añade el signo de euro, y letras del francés y finlandés ausentes en Latin-1 (ISO-8859-1). |
| UTF-8 | Unicode de 8 bit multibyte compatible con ASCII. | |
| cp866 | ibm866, 866 | Juego de caracteres cirílico específico de DOS. |
| cp1251 | Windows-1251, win-1251, 1251 | Juego de caracteres cirílico específico de Windows. |
| cp1252 | Windows-1252, 1252 | Juego de caracteres específico de Windows para Europa occidental. |
| KOI8-R | koi8-ru, koi8r | Ruso. |
| BIG5 | 950 | Chino tradicional, usado principalmente en Taiwán. |
| GB2312 | 936 | Chino simplificado, juego de caracteres estándar nacional. |
| BIG5-HKSCS | Big5 con extensiones de Hong Kong, chino tradicional. | |
| Shift_JIS | SJIS, SJIS-win, cp932, 932 | Japonés |
| EUC-JP | EUCJP, eucJP-win | Japonés |
| MacRoman | Juego de caracteres que fue utilizado por Mac OS. | |
'' |
Un string vacío activa la detección desde la codificación del script (Zend multibyte), default_charset y la actual configuración regional (véase nl_langinfo() y setlocale()), en este orden. No se recomienda. |
Nota: No se reconoce cualquier otro juego de caracteres. Será utilizada en su lugar la codificación por defecto y se emitirá una advertencia.
Devuelve la cadena decodificada.
| Versión | Descripción |
|---|---|
| 8.1.0 |
flags cambió de ENT_COMPAT a
ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401.
|
| 8.0.0 |
encoding ahora puede ser nullable.
|
Ejemplo #1 Decodificar entidades HTML
<?php
$orig = 'J\'ai "sorti" le <strong>chien</strong> tout à l\'heure';
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a, PHP_EOL; // J'ai "sorti" le <strong>chien</strong> tout &agrave; l'heure
echo $b, PHP_EOL; // J'ai "sorti" le <strong>chien</strong> tout à l'heure
?>Nota:
Podría preguntarse por qué
trim(html_entity_decode(' '));no reduce la cadena a la cadena vacía. Esto se debe a que la entidad no es un código ASCII 32 (que sería eliminado por trim()), sino un código ASCII 160 (0xa0) en la codificación por omisiónISO 8859-1.