html_entity_decode
(PHP 4 >= 4.3.0, PHP 5)
html_entity_decode — Convierte todas las entidades HTML a sus caracteres correspondientes
Descripción
$string
[, int $flags = ENT_COMPAT | ENT_HTML401
[, string $encoding = ini_get("default_charset")
]] )
html_entity_decode() es el opuesto de
htmlentities() en el sentido de que convierte todas las entidades HTML
del string a sus caracteres correspondientes.
Para ser más precisos, esta función decodifica todas las entidades (incluyendo todas las entidades numéricas) que a) sean necesariamente válidas para el tipo de documento elegido — es decir, para XML, esta función no decodifica las entidades con nombres que podrían estar definidas en algunos DTD — y b) aquellos caracteres que están en el conjunto de caracteres codificado asociado con la codificación elegida y que están permitidos en el tipo de documento elegido. Todas las demás entidades se dejan tal cual.
Parámetros
-
string -
El string de entrada.
-
flags -
Una máscara de bits de uno o más de los siguientes indicadores, los cuales especifican cómo manejar las comillas y el tipo de documento utilizado. El valor predeterminado es ENT_COMPAT | ENT_HTML401.
Constantes disponibles para flagsNombre de constante Descripción ENT_COMPATConvertirá las comillas dobles y sólo dejará las comillas simples. ENT_QUOTESConvertirá tanto las comillas dobles como las simples. ENT_NOQUOTESDejará tanto las comillas dobles como las simples sin convertir. ENT_HTML401Manejar el código como HTML 4.01. ENT_XML1Manejar el código como XML 1. ENT_XHTMLManejar el código como XHTML. ENT_HTML5Manejar el código como HTML 5. -
encoding -
Un argumento opcional que define la codificación empleada al convertir caracteres.
Si se omite, el valor predeterminado de
encodingvaría según la versión de PHP en uso. En PHP 5.6 y posterior, la opción de configuración default_charset se emplea como valor predeterminado. PHP 5.4 y 5.5 utilizarán UTF-8 como valor predeterminado. Las versiones anteriores de PHP emplean ISO-8859-1.Aunque este argumento es técnicamente opcional, se recomienda especificar el valor correcto para el código si se utiliza PHP 5.5 o anterior, o si la opción de configuración default_charset podría estar establecida incorrectamente para la entrada dada.
Están soportados los siguientes juegos de caracteres:
Juegos de caracteres soportados 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.
Valores devueltos
Devuelve el string descodificado.
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.6.0 |
El valor predeterminado para el parámetro encoding se
cambió para que fuera el valor de la opción
de configuración
default_charset.
|
| 5.4.0 | La codificación predeterminada se cambió de ISO-8859-1 a UTF-8. |
| 5.4.0 |
Se añadieron las constantes ENT_HTML401, ENT_XML1,
ENT_XHTML y ENT_HTML5.
|
Ejemplos
Ejemplo #1 Decodificación de 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
?>
Notas
Nota:
Puede que se pregunte por qué trim(html_entity_decode(' ')); no reduce el string a un string vacío. Esto es porque la entidad ' ' no es el código ASCII 32 (el cual es eliminado por trim()), sino el código ASCII 160 (0xa0) en la codificación ISO 8859-1.
Ver también
- htmlentities() - Convierte todos los caracteres aplicables a entidades HTML
- htmlspecialchars() - Convierte caracteres especiales en entidades HTML
- get_html_translation_table() - Devuelve la tabla de traducción utilizada por htmlspecialchars y htmlentities
- urldecode() - Decodifica una cadena cifrada como URL