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 restituiscetrue. 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"><?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()ofile_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.