W3docs

highlight_file()

In questo articolo ci concentreremo sulla funzione PHP highlight_file(), con una panoramica, il suo funzionamento ed esempi di utilizzo.

In questo articolo ci concentreremo sulla funzione PHP highlight_file(). Forniremo una panoramica della funzione, spiegheremo come funziona e mostreremo esempi del suo utilizzo.

Introduzione alla funzione highlight_file()

La funzione highlight_file() è una funzione PHP integrata che stampa un file sorgente PHP con la sua sintassi evidenziata con colori in HTML. È utile quando si vuole mostrare il contenuto di uno script su una pagina web — ad esempio in un tutorial, una galleria di snippet di codice o una semplice documentazione — senza dover scrivere il proprio highlighter.

Sintassi

highlight_file(string $filename, bool $return = false): string|bool
  • $filename — il percorso del file PHP che si vuole visualizzare.
  • $return — quando è false (valore predefinito), l'HTML evidenziato viene inviato direttamente al buffer di output e la funzione restituisce true. Quando è true, l'HTML viene restituito come stringa invece di essere stampato.

Internamente, PHP tokenizza il file e racchiude ogni token (parole chiave, stringhe, commenti, ecc.) in elementi <span> con colori inline presi dalle direttive highlight.* in php.ini.

Nota di sicurezza: highlight_file() rivela il codice sorgente grezzo di un file, incluse eventuali credenziali, chiavi API o password del database in esso presenti. Non puntare mai questa funzione a un file basandosi su input utente non validato e non esporla mai per file che contengono dati sensibili.

Come usare la funzione highlight_file()

Utilizzare la funzione highlight_file() è molto semplice. È sufficiente chiamare la funzione e passare il nome del file PHP che si vuole evidenziare. Ecco un esempio:

Come usare la funzione highlight_file()?

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

In questo esempio, $file contiene il percorso dello script che vogliamo visualizzare. Se example.php contiene:

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

chiamare highlight_file($file) stampa HTML simile a questo (i colori provengono dagli attributi style inline, qui abbreviati per leggibilità):

<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 funzione racchiude già tutto in un blocco <pre><code>, quindi le interruzioni di riga originali e l'indentazione vengono preservate nel browser senza alcun markup aggiuntivo da parte tua.

Personalizzare l'output

La funzione highlight_file() dispone di opzioni di personalizzazione integrate limitate. Accetta solo un secondo parametro booleano $return. Quando impostato su true, la funzione restituisce l'HTML evidenziato come stringa invece di inviarlo direttamente al browser.

Questo è utile quando si vuole post-elaborare il markup, memorizzarlo nella cache o incorporarlo in un template più grande invece di stamparlo immediatamente. Ecco un esempio di come acquisire l'output:

Esempio di acquisizione dell'output

<?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;
?>

È possibile modificare i colori globalmente impostando le direttive highlight.comment, highlight.default, highlight.html, highlight.keyword e highlight.string in php.ini (o a runtime con ini_set()), ma la funzione emette sempre stili inline — non è possibile farle generare classi CSS.

Se si ha bisogno di una personalizzazione avanzata (classi CSS personalizzate, numeri di riga o schemi di colori diversi), highlight_file() non è lo strumento giusto:

  • Per evidenziare codice contenuto in una variabile stringa anziché in un file, usa highlight_string().
  • Per leggere il contenuto di un file senza evidenziazione, usa readfile() o file_get_contents().
  • Per un controllo completo sull'output, costruisci un highlighter personalizzato basato su token_get_all() di PHP, oppure usa una libreria di terze parti come highlight.js o Prism sul front end.

Conclusione

In conclusione, la funzione highlight_file() è uno strumento diretto per generare codice PHP formattato con evidenziazione della sintassi. Comprendendo i suoi parametri effettivi e i suoi limiti, è possibile utilizzarla efficacemente per la visualizzazione di base della sintassi o integrarla con strumenti esterni per esigenze di formattazione più avanzate.

Esercizio

Pratica
Cosa fa la funzione highlight_file() in PHP?
Cosa fa la funzione highlight_file() in PHP?
Was this page helpful?