Faire un tableau en texte avec printf et des caractères graphiques
Je classe ça dans la section PHP mais ça vient du C et on peut faire pareil en Bash ou d'autres langages.
Quelques éléments de doc
- Les caractères graphiques (ou semi-graphiques) sont listés sur cette page Wikipédia en anglais : Box-drawing character
- La doc de la fonction printf pour PHP est plus sympa que le man printf
Un exemple de script simple
Pour afficher le résultat d'une requête SQL dans un tableau de 2 colonnes, une avec du texte de 60 caractères maximum calé à gauche, et une avec un nombre à virgule de 10 caractères maximum, avec des bords simples et fins.
echo "┌──────────────────────────────────────────────────────────────┬────────────┐\n"; printf("│ %-60s │ %10s │\n", "Bidule", "Truc"); echo "├──────────────────────────────────────────────────────────────┼────────────┤\n"; while ($row = $sth->fetch()) { printf("│ %-60s │ %10f │\n", $row[0], $row[1]); } echo "└──────────────────────────────────────────────────────────────┴────────────┘\n";
Je trouve pratique de voir le gabarit des lignes du haut et du bas donc je les insère dans Vim avec 62i ─ Echap mais je peux aussi les faire avec :
printf("┌%62s┬%12s┐\n", str_repeat("─", 62), str_repeat("─", 12));