W3docs

highlight_string()

En este artículo nos enfocamos en la función PHP highlight_string(): qué hace, su firma, valor de retorno y ejemplos de uso.

En este artículo nos enfocaremos en la función PHP highlight_string(). Veremos qué hace, su firma y valor de retorno, cómo capturar la salida como string, errores comunes y cuándo conviene usar otra alternativa.

Introducción a la función highlight_string()

highlight_string() es una función integrada de PHP que devuelve o imprime una versión HTML con resaltado de sintaxis de un string de código fuente PHP. Es útil cuando deseas mostrar ejemplos de código legibles y con colores en una página web — por ejemplo en documentación, una entrada de blog o un sitio de tutoriales — sin necesidad de escribir tu propio tokenizador.

Es importante entender que highlight_string() solo resalta código PHP, y el código debe incluir la etiqueta de apertura <?php (o una etiqueta corta) para que el resaltado funcione. El texto sin etiquetas PHP se renderiza en su mayor parte como un solo token, por lo que los colores esperados no aparecerán.

Firma

highlight_string(string $string, bool $return = false): string|bool
  • $string — el código PHP a resaltar.
  • $return — si es true, el HTML resaltado se devuelve como string; si es false (el valor por defecto), se imprime directamente y la función devuelve true.

El marcado generado usa atributos style="color: …" en línea que provienen de la configuración ini highlight.* (como highlight.string y highlight.keyword).

Cómo usar la función highlight_string()

En su forma más simple, llama a la función y pasa el string PHP que deseas resaltar:

¿Cómo usar la función highlight_string()?

<?php
$string = '<?php echo "Hello, World!"; ?>';
highlight_string($string);
?>

Esto imprime HTML similar al siguiente directamente en el navegador:

<pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello, World!"</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></code></pre>

En el navegador, las palabras clave, el string y las etiquetas se muestran en diferentes colores. Observa que los caracteres especiales < y > se escapan a &lt; y &gt;, por lo que el código resaltado se muestra de forma segura como texto en lugar de ser interpretado como HTML.

Devolver la salida en lugar de imprimirla

De forma predeterminada, highlight_string() imprime el HTML resaltado de inmediato. Pasa true como segundo argumento cuando quieras capturar el resultado — por ejemplo para almacenarlo en caché, pasarlo por una plantilla o envolverlo en marcado adicional antes de enviarlo a la página:

Ejemplo de PHP highlight_string()

<?php
$string = '<?php echo "Hello, World!"; ?>';
$highlighted = highlight_string($string, true);
echo '<pre>' . $highlighted . '</pre>';
?>

Dado que la función ya envuelve su salida en un bloque <pre><code>, normalmente no necesitas agregar tu propio <pre> — el contenedor anterior se muestra solo para ilustrar que $highlighted es un string ordinario que puedes concatenar con cualquier cosa.

Errores comunes y limitaciones

  • El código debe contener etiquetas PHP. highlight_string('echo "hi";') (sin <?php) se trata como texto sin formato y aparece sin estilo. Envuelve tu fragmento en <?php … ?> primero.
  • La función se encarga del escape — no tú. highlight_string() codifica el código en HTML por sí misma, por lo que nunca lo pases primero por htmlspecialchars() o verás entidades duplicadas como &amp;lt;.
  • Sin opciones para números de línea ni clases CSS. Los colores son atributos style en línea extraídos de la configuración ini highlight.*; no hay forma integrada de agregar números de línea ni clases personalizadas.
  • Llama al tokenizador real de PHP. El código sintácticamente incorrecto puede emitir advertencias, ya que la función analiza la entrada de la misma manera que el motor lo hace.

Para resaltado avanzado — clases CSS personalizadas, números de línea o resaltado de lenguajes distintos de PHP — analiza el código tú mismo con token_get_all() y construye tu propio marcado, o usa una biblioteca dedicada.

Funciones relacionadas

  • highlight_file() — el mismo resaltador, pero lee el código PHP desde un archivo en lugar de un string.
  • htmlspecialchars() — escapa caracteres especiales HTML cuando no usas highlight_string().
  • htmlentities() — convierte todos los caracteres aplicables en entidades HTML.
  • nl2br() — inserta etiquetas <br> antes de los saltos de línea al mostrar texto sin formato.

Conclusión

En conclusión, la función highlight_string() es una herramienta integrada para generar strings PHP formateados con resaltado de sintaxis. Al comprender cómo usar la función y su parámetro de retorno, puedes aprovechar esta característica para mostrar código legible y resaltado en tus aplicaciones web.

Práctica

Práctica
¿Cuál es la función principal de highlight_string() en PHP?
¿Cuál es la función principal de highlight_string() en PHP?
Was this page helpful?