Función PHP htmlspecialchars()

Ejemplo

Convertir los caracteres predefinidos "<" (menor que) y ">" (mayor que) en entidades HTML:

<?php
$str = "Esto es un texto <b>negrita</b>.";
echo htmlspecialchars($str);
?>

La salida HTML del código anterior es la siguiente (ver código fuente):

<!DOCTYPE html>
<html>
<body>
Esto es un texto <b>negrita</b>.
</body>
</html>

La salida del navegador del código anterior es la siguiente:

Esto es un texto <b>negrita</b>.

Ejemplo de ejecución

Definición y uso

La función htmlspecialchars() convierte los caracteres predefinidos en entidades HTML.

Los caracteres predefinidos son:

  • & (y) se convierte en &
  • " (comilla doble) se convierte en "
  • ' (comilla simple) se convierte en '
  • < (menor que) se convierte en <
  • > (mayor que) se convierte en >

Consejo:Para convertir entidades HTML especiales en caracteres, utilice htmlspecialchars_decode() Función.

Sintaxis

htmlspecialchars(string,flags,character-set,double_encode)
Parámetros Descripción
string Obligatorio. Especifica la cadena que se debe convertir.
flags

Opcional. Especifica cómo manejar las comillas, la codificación no válida y qué tipo de documento usar.

Tipos de comillas disponibles:

  • ENT_COMPAT - Predeterminado. Solo codificar comillas dobles.
  • ENT_QUOTES - Codificar comillas dobles y comillas simples.
  • ENT_NOQUOTES - No codificar ninguna comilla.

Codificación no válida:

  • ENT_IGNORE - Ignorar la codificación no válida en lugar de que la función devuelva una cadena vacía. Se debe evitar siempre que sea posible, ya que podría tener un impacto en la seguridad.
  • ENT_SUBSTITUTE - Reemplazar la codificación no válida con un carácter especificado que contiene el carácter de reemplazo Unicode U+FFFD (UTF-8) o &#FFFD;, en lugar de devolver una cadena vacía.
  • ENT_DISALLOWED - Reemplazar los puntos de código no válidos en el tipo de documento especificado con el carácter de reemplazo Unicode U+FFFD (UTF-8) o &#FFFD;.

Flags adicionales para especificar el tipo de documento utilizado:

  • ENT_HTML401 - Predeterminado. Procesar código como HTML 4.01.
  • ENT_HTML5 - Procesar código como HTML 5.
  • ENT_XML1 - Procesar código como XML 1.
  • ENT_XHTML - Procesar código como XHTML.
character-set

Opcional. Una cadena que especifica el conjunto de caracteres a usar.

Valores permitidos:

  • UTF-8 - Predeterminado. ASCII compatible con múltiples bytes de Unicode de 8 bits
  • ISO-8859-1 - Europa occidental
  • ISO-8859-15 - Europa occidental (incluso símbolos de euro + letras francesas y finlandesas perdidas en ISO-8859-1)
  • cp866 - Conjunto de caracteres cirílico específico de DOS
  • cp1251 - Conjunto de caracteres cirílico específico de Windows
  • cp1252 - Conjunto de caracteres europeo occidental específico de Windows
  • KOI8-R - Ruso
  • BIG5 - Chino tradicional,主要用于台湾
  • GB2312 - Chino simplificado, conjunto de caracteres de norma nacional
  • BIG5-HKSCS - Big5 con extensión de Hong Kong
  • Shift_JIS - Japonés
  • EUC-JP - Japonés
  • MacRoman - Conjunto de caracteres utilizado por el sistema operativo Mac

Comentarios:En versiones anteriores a PHP 5.4, los conjuntos de caracteres no reconocidos se ignorarán y se reemplazarán con ISO-8859-1. A partir de PHP 5.4, los conjuntos de caracteres no reconocidos se ignorarán y se reemplazarán con UTF-8.

double_encode

Opcional. Booleano que especifica si se debe codificar las entidades HTML existentes.

  • TRUE - Predeterminado. Convertirá cada entidad.
  • FALSE - No codificará las entidades HTML existentes.

Detalles técnicos

Valor devuelto:

Se devuelve la cadena convertida.

Si string Si contiene una codificación no válida, se devuelve una cadena vacía, a menos que se hayan configurado los marcadores ENT_IGNORE o ENT_SUBSTITUTE.

Versión de PHP: 4+
Registro de actualizaciones:

En PHP 5,character-set El valor predeterminado del parámetro se cambió a UTF-8.

En PHP 5.4, se añadieron: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 y ENT_XHTML.

En PHP 5.3, se añadió ENT_IGNORE.

En PHP 5.2.3, se añadió double_encode Parámetros.

En PHP 4.1, se agregó character-set Parámetros.

Más ejemplos

Ejemplo 1

Convertir algunos caracteres predefinidos en entidades HTML:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Solo convertir comillas dobles
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Convertir comillas dobles y simples
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // No convertir ninguna comilla
?>

La salida HTML del código anterior es la siguiente (ver código fuente):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<br>
Bill & 'Steve'
</body>
</html>

La salida del navegador del código anterior es la siguiente:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

Ejemplo de ejecución

Ejemplo 2

Convertir comillas dobles en entidades HTML:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Convertir comillas dobles y simples
?>

La salida HTML del código anterior es la siguiente (ver código fuente):

<!DOCTYPE html>
<html>
<body>
Me encanta "PHP".
</body>
</html>

La salida del navegador del código anterior es la siguiente:

Me encanta "PHP".

Ejemplo de ejecución