highlight_string()
In questo articolo ci concentriamo sulla funzione PHP highlight_string(), con panoramica, funzionamento ed esempi pratici di utilizzo.
In questo articolo ci concentriamo sulla funzione PHP highlight_string(). Vedremo cosa fa, la sua firma e il valore restituito, come catturare l'output come stringa, i problemi comuni e quando conviene usare un approccio diverso.
Introduzione alla funzione highlight_string()
highlight_string() è una funzione PHP integrata che restituisce o stampa una versione HTML con evidenziazione della sintassi di una stringa di codice sorgente PHP. È utile quando vuoi mostrare esempi di codice leggibili e colorati su una pagina web — ad esempio in documentazione, un post di blog o un sito di tutorial — senza dover scrivere un proprio tokenizer.
È importante capire che highlight_string() evidenzia solo codice PHP, e il codice deve includere il tag di apertura <?php (o un tag abbreviato) affinché l'evidenziazione si attivi. Il testo semplice privo di tag PHP viene in gran parte reso come un unico token, quindi i colori attesi non appariranno.
Firma
highlight_string(string $string, bool $return = false): string|bool$string— il codice PHP da evidenziare.$return— setrue, l'HTML evidenziato viene restituito come stringa; sefalse(il valore predefinito), viene stampato direttamente e la funzione restituiscetrue.
Il markup generato utilizza attributi style="color: …" inline che provengono dalle impostazioni ini highlight.* (come highlight.string e highlight.keyword).
Come usare la funzione highlight_string()
Nella forma più semplice, chiama la funzione e passa la stringa PHP da evidenziare:
Come si usa la funzione highlight_string()?
<?php
$string = '<?php echo "Hello, World!"; ?>';
highlight_string($string);
?>Questo stampa direttamente nel browser un HTML simile al seguente:
<pre><code style="color: #000000"><span style="color: #0000BB"><?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello, World!"</span><span style="color: #007700">; </span><span style="color: #0000BB">?></span></code></pre>Nel browser, le parole chiave, la stringa e i tag vengono visualizzati in colori diversi. Si noti che i caratteri speciali < e > sono stati trasformati in < e >, in modo che il codice evidenziato venga mostrato in modo sicuro come testo anziché essere interpretato come HTML.
Restituire l'output invece di stamparlo
Per impostazione predefinita highlight_string() stampa immediatamente l'HTML evidenziato. Passa true come secondo argomento quando vuoi catturare il risultato — ad esempio per metterlo nella cache, passarlo attraverso un template o racchiuderlo in markup aggiuntivo prima di inviarlo alla pagina:
Esempio di PHP highlight_string()
<?php
$string = '<?php echo "Hello, World!"; ?>';
$highlighted = highlight_string($string, true);
echo '<pre>' . $highlighted . '</pre>';
?>Poiché la funzione racchiude già il suo output in un blocco <pre><code>, di solito non è necessario aggiungere il proprio <pre> — il wrapper sopra è mostrato solo per illustrare che $highlighted è una stringa ordinaria che puoi concatenare con qualsiasi cosa.
Problemi comuni e limitazioni
- Il codice deve contenere i tag PHP.
highlight_string('echo "hi";')(senza<?php) viene trattato come testo semplice e non viene stilizzato. Racchiudi il tuo snippet in<?php … ?>prima. - L'input non va escalonato da te — ci pensa la funzione.
highlight_string()codifica in HTML il codice stesso, quindi non eseguire maihtmlspecialchars()prima o vedrai entità duplicate come&lt;. - Nessuna opzione per numeri di riga o classi CSS. I colori sono attributi
styleinline presi dalle impostazioni inihighlight.*; non c'è un modo integrato per aggiungere numeri di riga o classi personalizzate. - Usa il vero tokenizer PHP. Il codice sintatticamente incompleto potrebbe generare avvisi, poiché la funzione analizza l'input nello stesso modo in cui lo fa il motore.
Per un'evidenziazione avanzata — classi CSS personalizzate, numeri di riga o evidenziazione di linguaggi diversi da PHP — analizza il codice tu stesso con token_get_all() e costruisci il tuo markup, oppure usa una libreria dedicata.
Funzioni correlate
- highlight_file() — lo stesso strumento di evidenziazione, ma legge il codice PHP da un file invece che da una stringa.
- htmlspecialchars() — esegue l'escape dei caratteri speciali HTML quando non usi
highlight_string(). - htmlentities() — converte tutti i caratteri applicabili in entità HTML.
- nl2br() — inserisce tag
<br>prima dei caratteri di nuova riga quando si visualizza testo semplice.
Conclusione
In conclusione, la funzione highlight_string() è uno strumento integrato per generare stringhe PHP formattate con evidenziazione della sintassi. Capendo come usare la funzione e il suo parametro di ritorno, puoi sfruttare questa funzionalità per visualizzare codice leggibile ed evidenziato nelle tue applicazioni web.