Afficher en couleur dans le terminal

Comment afficher le pourcentage de traitement d’un script php en couleur dans le terminal.

Lors de l’exécution d’un script un peu lourd, il est parfois nécessaire d’afficher le pourcentage de traitement dans son terminal (surtout pour savoir si on a encore le temps d’aller se chercher un café).

Petit gif d'une tasse à café

Et pour cela on utilise les séquences d’échappement ANSI dans notre code.

On va prendre l’exemple d’un foreach, le code :

<?php
/** test de script affichage en console*/
$array = ['mon','tableau','avec','plein','de','valeurs'];
/** initialisation du total et du compteur de lignes */
$total = count($array);
$i = 0;
/** message de début de traitement */
echo "\ndebut traitement\r\n";
/** boucle de traitement */
foreach ($array as $item) 
{
    $i++;
    /** calcul du pourcentage de traitement */
    $pourcent = round(($i / $total) * 100,2);
    /** affichage du pourcentage de traitement */
    echo "\033[31m ".$pourcent." % \r";
}
/** en sortie de boucle on affiche 100% en vert */
echo "\033[32m 100 % \033[0m \r\n";
echo "\nfin traitement\r\n";
?>

Pour afficher en couleur dans le terminal notre echo est composé de 3 blocs :

  • \033[32m pour changer la couleur d’écriture en rouge
  • Notre pourcentage calculé
  • \r pour faire un retour chariot
exemple d'affichage en couleur dans le terminal
Affichage du pourcentage

Le fait de faire simplement un retour chariot sans le retour à la ligne, à chaque itération le pourcentage va être remplacé par le nouveau pourcentage.
Pour que toute notre ligne soit remplacée il faut faire un round sur notre pourcentage afin que le nombre de caractères utilisée soit toujours le même, sinon il peux afficher :
38 %4 %

Puis en sortie de boucle on affiche les 100% en vert et le message de fin de traitement.

exemple d'affichage en couleur dans le terminal
Affichage de la fin de traitement

Quelques exemples de couleurs

CouleurCode pour le texteCode pour l’arrière pan
Noir3040
Rouge3141
Vert3242
Jaune3343
Bleu3444
Magenta3545
Cyan3646
Blanc3747

Et voilà maintenant vous pouvez vous amuser à faire de jolis script tout en couleur !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *