Je ne pense pas que vous ayez à vous excuser pour le choix de la langue. PHP est un excellent langage pour les applications console.
Essayez ceci :
<?php
for( $i=0;$i<10;$i++){
print "$i \r";
sleep(1);
}
?>
Le "\r" écrasera la ligne avec le nouveau texte. Pour créer une nouvelle ligne, vous pouvez simplement utiliser "\n", mais je suppose que vous le saviez déjà.
J'espère que cela t'aides! Je sais que cela fonctionne sous Linux, mais je ne sais pas si cela fonctionne sous Windows ou d'autres systèmes d'exploitation.
Pour effacer un caractère précédemment imprimé, vous avez trois options :
-
echo chr(8) . " ";
fait écho au caractère de retour, et déplacera le curseur d'un endroit en arrière, et l'espace écrasera alors le caractère. Vous pouvez utiliserchr(8)
plusieurs fois de suite pour reculer de plusieurs caractères. -
echo "\r";
ramènera le curseur au début de la ligne courante. Vous pouvez maintenant remplacer la ligne par un nouveau texte. -
La troisième option consiste à définir la ligne et la colonne de la position du curseur à l'aide des codes d'échappement ANSI, puis à imprimer les caractères de remplacement. Cela peut ne pas fonctionner avec tous les terminaux :
function movecursor($line, $column){
echo "\033[{$line};{$column}H";
}
\r a fait l'affaire.
Pour référence future, \b ne fonctionne pas en PHP sous Linux. J'étais curieux - j'ai donc fait quelques expériences dans d'autres langages également (je l'ai fait sous Linux - je ne sais pas si le résultat sera le même sous Windows/Mac).
\b Fonctionne dans...
- Perl
- Rubis
- Tcl - avec le code
puts -nonewline "Hello\b"
\b Ne fonctionne pas dans
- PHP - le code
print "Hello\b";
imprimeHello\b
- Python - code
print "Hello\b"
imprimeHello<new line>
. Même résultat avecprint "Hello\b",