W3docs

highlight_file()

En este artículo, nos centraremos en la función PHP highlight_file(). Veremos una descripción general, cómo funciona y ejemplos de su uso.

En este artículo, nos centraremos en la función PHP highlight_file(). Le proporcionaremos una descripción general de la función, cómo funciona y ejemplos de su uso.

Introducción a la función highlight_file()

La función highlight_file() es una función integrada de PHP que imprime un archivo fuente PHP con su sintaxis coloreada como HTML. Es muy útil cuando desea mostrar el contenido de un script en una página web — por ejemplo, en un tutorial, una galería de fragmentos de código o documentación sencilla — sin necesidad de escribir su propio resaltador.

Sintaxis

highlight_file(string $filename, bool $return = false): string|bool
  • $filename — la ruta al archivo PHP que desea mostrar.
  • $return — cuando es false (el valor predeterminado), el HTML resaltado se envía directamente al búfer de salida y la función devuelve true. Cuando es true, el HTML se devuelve como una cadena en lugar de imprimirse.

Internamente, PHP tokeniza el archivo y envuelve cada token (palabras clave, cadenas, comentarios, etc.) en elementos <span> con colores en línea tomados de las directivas highlight.* en php.ini.

Nota de seguridad: highlight_file() revela el código fuente sin procesar de un archivo, incluidas las credenciales, las claves API o las contraseñas de bases de datos que contenga. Nunca lo apunte a un archivo basándose en entradas de usuario sin validar, y nunca lo exponga para archivos que contengan información confidencial.

Cómo usar la función highlight_file()

Usar la función highlight_file() es muy sencillo. Solo necesita llamar a la función y pasar el nombre del archivo PHP que desea resaltar. Aquí tiene un ejemplo:

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

<?php
$file = 'example.php';
highlight_file($file);
?>

En este ejemplo, $file contiene la ruta del script que queremos mostrar. Si example.php contiene:

<?php
$name = "World";
echo "Hello, $name!";

llamar a highlight_file($file) imprime HTML similar a este (los colores provienen de atributos style en línea, aquí simplificados para mayor legibilidad):

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

La función ya envuelve todo en un bloque <pre><code>, por lo que los saltos de línea originales y la indentación se conservan en el navegador sin necesidad de ningún marcado adicional.

Personalización de la salida

La función highlight_file() tiene opciones de personalización integradas limitadas. Solo acepta un segundo parámetro boolean $return. Cuando se establece en true, la función devuelve el HTML resaltado como una cadena en lugar de enviarlo directamente al navegador.

Esto es útil cuando desea procesar el marcado posteriormente, almacenarlo en caché o incrustarlo dentro de una plantilla más grande en lugar de imprimirlo inmediatamente. Aquí tiene un ejemplo de cómo capturar la salida:

Ejemplo de captura de salida

<?php
$file = 'example.php';
$highlighted = highlight_file($file, true);

// $highlighted is already a complete <pre><code>...</code></pre> block,
// so you can store it, insert it into a template, or echo it directly.
echo $highlighted;
?>

Puede cambiar los colores globalmente configurando las directivas highlight.comment, highlight.default, highlight.html, highlight.keyword y highlight.string en php.ini (o en tiempo de ejecución con ini_set()), pero la función siempre emite estilos en línea — no hay forma de hacer que produzca clases CSS.

Si necesita una personalización avanzada (clases CSS personalizadas, números de línea o esquemas de colores diferentes), highlight_file() no es la herramienta adecuada:

  • Para resaltar código que se encuentra en una variable de tipo string en lugar de un archivo, use highlight_string().
  • Para leer el contenido de un archivo sin resaltado, use readfile() o file_get_contents().
  • Para un control total sobre la salida, construya un resaltador personalizado sobre token_get_all() de PHP, o use una biblioteca de terceros como highlight.js o Prism en el front end.

Conclusión

En conclusión, la función highlight_file() es una herramienta sencilla para generar código PHP formateado con resaltado de sintaxis. Al comprender sus parámetros reales y sus limitaciones, puede utilizarla eficazmente para la visualización básica de sintaxis o integrarla con herramientas externas para necesidades de formato más avanzadas.

Práctica

Práctica
¿Qué hace la función highlight_file() en PHP?
¿Qué hace la función highlight_file() en PHP?
Was this page helpful?