W3docs

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 — se true, l'HTML evidenziato viene restituito come stringa; se false (il valore predefinito), viene stampato direttamente e la funzione restituisce true.

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">&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>

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 &lt; e &gt;, 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 mai htmlspecialchars() prima o vedrai entità duplicate come &amp;lt;.
  • Nessuna opzione per numeri di riga o classi CSS. I colori sono attributi style inline presi dalle impostazioni ini highlight.*; 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.

Pratica

Pratica
Qual è la funzione principale di highlight_string() in PHP?
Qual è la funzione principale di highlight_string() in PHP?
Was this page helpful?