Ich denke nicht, dass Sie sich für die Sprachwahl entschuldigen müssen. PHP ist eine großartige Sprache für Konsolenanwendungen.
Probieren Sie es aus:
<?php
for( $i=0;$i<10;$i++){
print "$i \r";
sleep(1);
}
?>
Das "\r" überschreibt die Zeile mit dem neuen Text. Um eine neue Zeile zu erstellen, können Sie einfach "\n" verwenden, aber ich schätze, das wussten Sie bereits.
Hoffe das hilft! Ich weiß, dass dies unter Linux funktioniert, aber ich weiß nicht, ob es unter Windows oder anderen Betriebssystemen funktioniert.
Um ein zuvor gedrucktes Zeichen zu löschen, haben Sie drei Möglichkeiten:
-
echo chr(8) . " ";
gibt das Rückwärtszeichen wieder und bewegt den Cursor um eine Stelle zurück, und das Leerzeichen überschreibt dann das Zeichen. Sie könnenchr(8)
verwenden mehrmals hintereinander, um mehrere Zeichen zurückzugehen. -
echo "\r";
bringt den Cursor an den Anfang der aktuellen Zeile zurück. Sie können die Zeile jetzt durch neuen Text ersetzen. -
Die dritte Option besteht darin, die Zeile und Spalte der Cursorposition mit ANSI-Escape-Codes festzulegen und dann die Ersatzzeichen zu drucken. Es funktioniert möglicherweise nicht mit allen Terminals:
function movecursor($line, $column){
echo "\033[{$line};{$column}H";
}
\r hat es geschafft.
Zur späteren Bezugnahme funktioniert \b nicht in PHP unter Linux. Ich war neugierig - also habe ich auch ein paar Experimente in anderen Sprachen gemacht (ich habe das unter Linux gemacht - ich weiß nicht, ob das Ergebnis unter Windows/Mac dasselbe sein wird)..
\b Funktioniert in...
- Perl
- Rubin
- Tcl - mit Code
puts -nonewline "Hello\b"
\b Funktioniert nicht in
- PHP - der Code
print "Hello\b";
gibtHello\b
aus - Python - Code
print "Hello\b"
gibtHello<new line>
aus . Gleiches Ergebnis mitprint "Hello\b",