W3docs

highlight_string()

Découvrez la fonction PHP highlight_string() : fonctionnement, signature, valeur de retour, capture de la sortie et exemples pratiques.

Dans cet article, nous allons nous concentrer sur la fonction PHP highlight_string(). Nous verrons ce qu'elle fait, sa signature et sa valeur de retour, comment capturer la sortie sous forme de chaîne, les pièges courants et quand envisager une autre approche.

Introduction à la fonction highlight_string()

highlight_string() est une fonction PHP native qui retourne ou affiche une version HTML colorisée d'une chaîne de code source PHP. Elle est utile lorsque vous souhaitez afficher des exemples de code lisibles et colorés sur une page web — par exemple dans de la documentation, un article de blog ou un site de tutoriels — sans écrire votre propre analyseur lexical.

Il est important de comprendre que highlight_string() ne met en évidence que le code PHP, et ce code doit inclure la balise ouvrante <?php (ou une balise courte) pour que la colorisation s'active. Le texte brut sans balises PHP est en grande partie rendu comme un seul token, de sorte que les couleurs attendues n'apparaîtront pas.

Signature

highlight_string(string $string, bool $return = false): string|bool
  • $string — le code PHP à coloriser.
  • $return — si true, le HTML colorisé est retourné sous forme de chaîne ; si false (valeur par défaut), il est affiché directement et la fonction retourne true.

Le balisage généré utilise des attributs style="color: …" en ligne issus des paramètres ini highlight.* (tels que highlight.string et highlight.keyword).

Comment utiliser la fonction highlight_string()

Dans sa forme la plus simple, appelez la fonction et passez la chaîne PHP que vous souhaitez coloriser :

Comment utiliser la fonction highlight_string() ?

<?php
$string = '<?php echo "Hello, World!"; ?>';
highlight_string($string);
?>

Cela affiche un HTML similaire à ce qui suit directement dans le navigateur :

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

Dans le navigateur, les mots-clés, la chaîne et les balises s'affichent dans des couleurs différentes. Notez que les caractères spéciaux < et > sont échappés en &lt; et &gt;, de sorte que le code colorisé s'affiche de manière sûre en tant que texte plutôt que d'être interprété comme du HTML.

Retourner la sortie au lieu de l'afficher

Par défaut, highlight_string() affiche immédiatement le HTML colorisé. Passez true comme second argument lorsque vous souhaitez capturer le résultat — par exemple pour le mettre en cache, le faire passer par un template ou l'envelopper dans du balisage supplémentaire avant de l'envoyer à la page :

Exemple de PHP highlight_string()

<?php
$string = '<?php echo "Hello, World!"; ?>';
$highlighted = highlight_string($string, true);
echo '<pre>' . $highlighted . '</pre>';
?>

Étant donné que la fonction encapsule déjà sa sortie dans un bloc <pre><code>, vous n'avez généralement pas besoin d'ajouter votre propre <pre> — l'enveloppe ci-dessus est montrée uniquement pour illustrer que $highlighted est une chaîne ordinaire que vous pouvez concaténer avec n'importe quoi.

Pièges et limitations

  • Le code doit contenir des balises PHP. highlight_string('echo "hi";') (sans <?php) est traité comme du texte brut et s'affiche sans style. Enveloppez votre extrait dans <?php … ?> au préalable.
  • L'entrée n'est pas échappée par vous — la fonction le fait. highlight_string() encode en HTML le code lui-même, donc n'exécutez jamais htmlspecialchars() dessus au préalable ou vous verrez des entités doublées comme &amp;lt;.
  • Pas d'options pour les numéros de ligne ou les classes CSS. Les couleurs sont des attributs style en ligne tirés des paramètres ini highlight.* ; il n'existe pas de moyen natif d'ajouter des numéros de ligne ou des classes personnalisées.
  • Elle appelle le vrai analyseur lexical PHP. Un code syntaxiquement incorrect peut émettre des avertissements, car la fonction analyse l'entrée de la même manière que le moteur PHP.

Pour une colorisation avancée — classes CSS personnalisées, numéros de ligne ou colorisation de langages autres que PHP — analysez le code vous-même avec token_get_all() et construisez votre propre balisage, ou utilisez une bibliothèque dédiée.

Fonctions associées

  • highlight_file() — le même coloriseur, mais lit le code PHP depuis un fichier plutôt que depuis une chaîne.
  • htmlspecialchars() — échappe les caractères spéciaux HTML lorsque vous n'utilisez pas highlight_string().
  • htmlentities() — convertit tous les caractères applicables en entités HTML.
  • nl2br() — insère des balises <br> avant les sauts de ligne lors de l'affichage de texte brut.

Conclusion

En conclusion, la fonction highlight_string() est un outil natif pour générer des chaînes PHP formatées avec colorisation syntaxique. En comprenant comment utiliser la fonction et son paramètre de retour, vous pouvez tirer parti de cette fonctionnalité pour afficher du code lisible et colorisé dans vos applications web.

Pratique

Pratique
Quelle est la fonction principale de highlight_string() en PHP ?
Quelle est la fonction principale de highlight_string() en PHP ?
Was this page helpful?