(PHP 4, PHP 5)
htmlspecialchars — Convierte caracteres especiales en entidades HTML
$string
[, int $flags
= ENT_COMPAT | ENT_HTML401
[, string $encoding
= 'UTF-8'
[, bool $double_encode
= true
]]] )Ciertos caracteres tienen un significado especial en HTML y deben ser representados por entidades HTML si se desea preservar su significado. Esta función devuelve un string con estas conversiones realizadas. Si se requiere que todas las subcadenas de entrada tengan asociadas entidades con nombre para que sean traducidas, use htmlentities() instead.
Si el string de entrada pasado a esta función y el documento final comparten el mismo conjunto de carcteres, esta función es suficiente para preparar entradas para su inclusión en la mayoría de los contextos de un documento HTML. Sin embargo, si la entrada puede representar caracteres que no están codificados en el conjunto de caracteres del documento final, y es necesario conservar dichos caracteres (tales como números o entidades con nombre), esta función y htmlentities() (la cual solamente codifica subcadenas que tienen equivalentes de entidades con nombre) podrían ser insuficientes. De podria usar mb_encode_numericentity() en su lugar.
Las traducciones realizadas son:
ENT_NOQUOTES
no está establecido.
ENT_QUOTES
está establecido.
string
El string a convertir.
flags
Una máscara de bits de una o más de las siguientes banderas, las cuales especifican cómo manejar las comillas, las secuencias de unidad de código inválidas y el tipo de documento utilizado. El valor predeterminado es ENT_COMPAT | ENT_HTML401.
Nombre de la constante | Descripción |
---|---|
ENT_COMPAT |
Convertirá las comillas dobles y sólo dejará las comillas simples. |
ENT_QUOTES |
Convertirá tanto las comillas dobles como las simples. |
ENT_NOQUOTES |
Dejará tanto las comillas dobles como las simples sin convertir. |
ENT_IGNORE |
Silenciosamente descarta unidades de secuencia de código no válidas en lugar de devolver un string vacío. No se recomienda el uso de esta bandera, ya que » puede tener implicaciones de seguridad. |
ENT_SUBSTITUTE |
Reemplaza las secuencias de unidad de código inválidas con un Carácter de Reemplazo Unicode U+FFFD (UTF-8) o &#FFFD; (de lo contrario) en lugar de devolver un string vacío. |
ENT_DISALLOWED |
Reemplaza los puntos de código no válidos para el tipo de documento dado con un Carácter de Reemplazo Unicode U+FFFD (UTF-8) o &#FFFD; (de lo contrario) en lugar de dejarlos tal cual. Esto puede ser útil, por ejemplo, para asegurar que los documentos XML estén bien formados con contenido externo incrustado. |
ENT_HTML401 |
Maneja el código como HTML 4.01. |
ENT_XML1 |
Maneja el código como XML 1. |
ENT_XHTML |
Maneja el código como XHTML. |
ENT_HTML5 |
Maneja el código como HTML 5. |
encoding
Desde PHP 5.6.0, el valor de default_charset es usado como predeterminado. Desde PHP 5.4.0, UTF-8 es el valor predeterminado. PHP anterior a 5.4.0, utiliza ISO-8859-1 como el valor predeterminado. Aunque este argumento es técnicamente opcional, se les anima a especificar el valor correcto a su código.
Para el propósito de ésta función, los juegos de caracteres
ISO-8859-1, ISO-8859-15,
UTF-8, cp866,
cp1251, cp1252 y
KOI8-R son realmente equivalentes, siempre y cuando el
string
sea válido para la codificación, ya que
los caracteres afectados por htmlspecialchars() ocupan
las mismas posiciones en todas estas codificaciones.
Los siguientes juegos de caracteres están 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 que hacián falta en Latin-1 (ISO-8859-1). |
UTF-8 | Multi-byte Unicode de 8-bits 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ílicos 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 (ver nl_langinfo() y setlocale()), en este orden. No se recomienda. |
Nota: Cualquier otro juego de caracteres no es reconocido. La codificación por defecto será utilizada en su lugar y se emitirá una advertencia.
double_encode
Cuando double_encode
se desactiva, PHP no codificará
las entidades HTML existentes. El valor predeterminado es convertirlo todo.
El string convertido.
Si el string
de entrada contiene una secuencia de unidad de código
no válida en el parámetro encoding
dado, se devolverá un string
vacío, a menos que cualquiera de las banderas ENT_IGNORE
o
ENT_SUBSTITUTE
estén establecidas.
Versión | Descripción |
---|---|
5.4.0 |
El valor predeterminado del parámetro encoding se
cambió a UTF-8.
|
5.4.0 |
Fueron agregadas las constantes ENT_SUBSTITUTE , ENT_DISALLOWED ,
ENT_HTML401 , ENT_XML1 ,
ENT_XHTML y ENT_HTML5 .
|
5.3.0 |
Fue agregada la constante ENT_IGNORE .
|
5.2.3 |
Fue agregado el parámetro double_encode .
|
4.1.0 |
Fue agregado el parámetro encoding .
|
Ejemplo #1 Ejemplo de htmlspecialchars()
<?php
$nueva = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $nueva; // <a href='test'>Test</a>
?>
Nota:
Se ha de tener en cuenta que esta función no traduce nada más de lo que aparece en la lista de arriba. Para la traducción completa de entidades, véase htmlentities().