PHP htmlspecialchars()Funciones

PHP String 参考手册Manual de referencia de PHP String

Ejemplos

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

<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); ?>

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

<!DOCTYPE html> <html> <body> This is some &lt;b&gt;bold&lt;/b&gt; text. </body> </html>

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

This is some <b>bold</b> text.

Ejecutar ejemplo »

Definición y uso

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

Los caracteres predefinidos son:

  • & (ampersand) se convierte en &amp;
  • " (comillas dobles) se convierte en &quot;
  • ' (comillas simples) se convierte en &#039;
  • < (menor que) se convierte en &lt;
  • > (mayor que) se convierte en &gt;

Consejo:Para convertir entidades HTML especiales de vuelta a caracteres, use htmlspecialchars_decode()la función.


Sintaxis

htmlspecialchars(string,flags,character-set,double_encode)

Parámetros Descripción
string Obligatorio. Especifica la cadena a convertir.
flags Opcional. Especifica cómo manejar las comillas, las codificaciones no válidas y qué tipo de documento usar.

Tipos de comillas disponibles:

  • ENT_COMPAT - Por defecto. Solo codifica comillas dobles.
  • ENT_QUOTES - Codifica comillas dobles y simples.
  • ENT_NOQUOTES - No codifica ninguna comilla.

Codificaciones no válidas:

  • ENT_IGNORE - Ignora las codificaciones no válidas, en lugar de hacer que la función devuelva una cadena vacía. Debe evitarse en la medida de lo posible, ya que esto puede afectar a la seguridad.
  • ENT_SUBSTITUTE - Reemplaza la codificación no válida por un carácter especificado con el carácter de reemplazo Unicode U+FFFD (UTF-8) o &#FFFD;, en lugar de devolver una cadena vacía.
  • ENT_DISALLOWED - Reemplaza los puntos de código no válidos en el tipo de documento especificado por el carácter de reemplazo Unicode U+FFFD (UTF-8) o &#FFFD;.

Flags adicionales que especifican el tipo de documento a utilizar:

  • ENT_HTML401 - Por defecto. Procesa el código como HTML 4.01.
  • ENT_HTML5 - Procesa el código como HTML 5.
  • ENT_XML1 - Procesa el código como XML 1.
  • ENT_XHTML - Procesa el código como XHTML.
character-set Opcional. Una cadena que especifica el conjunto de caracteres a utilizar.

Valores permitidos:

  • UTF-8 - Por defecto. Unicode de 8 bits multibyte compatible con ASCII
  • ISO-8859-1 - Europa occidental
  • ISO-8859-15 - Europa occidental (añade el signo del euro + letras francesas y finlandesas que faltan 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 de Europa occidental específico de Windows
  • KOI8-R - Ruso
  • BIG5 - Chino tradicional, usado principalmente en Taiwán
  • GB2312 - Chino simplificado, conjunto de caracteres estándar 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

Nota:En versiones anteriores a PHP 5.4, los conjuntos de caracteres no reconocidos eran ignorados y reemplazados por ISO-8859-1. Desde PHP 5.4, los conjuntos de caracteres no reconocidos son ignorados y reemplazados por UTF-8.

double_encode Opcional. Un valor booleano que especifica si se codifican las entidades HTML existentes.
  • TRUE - Por defecto. Se convertirá cada entidad.
  • FALSE - No codificará las entidades HTML existentes.

Detalles técnicos

Valor de retorno: Devuelve la cadena convertida.

Sistringcontiene una codificación no válida, se devuelve una cadena vacía, a menos que se establezcan las flags ENT_IGNORE o ENT_SUBSTITUTE.
Versión de PHP: 4+
Registro de cambios: En PHP 5,character-setEl 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_encodeel parámetro.

En PHP 4.1, se añadiócharacter-setel parámetro.


Más ejemplos

Ejemplo 1

Convierte algunos caracteres predefinidos en entidades HTML:

<?php $str = "Jane & 'Tarzan'"; echo htmlspecialchars($str, ENT_COMPAT); //Por defecto, solo codifica comillas dobles. echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); //Codifica comillas dobles y simples. echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); //No codifica ninguna comilla. ?>

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

<!DOCTYPE html> <html> <body> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan' </body> </html>

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

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'

Ejecutar ejemplo »

Ejemplo 2

Convierte comillas dobles en entidades HTML:

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

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

<!DOCTYPE html> <html> <body> I love &quot;PHP&quot;. </body> </html>

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

I love "PHP".

Ejecutar ejemplo »


PHP String 参考手册Manual de referencia de PHP String Otras extensiones