No creo que tengas que disculparte por la elección del idioma. PHP es un gran lenguaje para aplicaciones de consola.
Prueba esto:
<?php
for( $i=0;$i<10;$i++){
print "$i \r";
sleep(1);
}
?>
El "\r" sobrescribirá la línea con el nuevo texto. Para crear una nueva línea, solo puede usar "\n", pero supongo que ya lo sabía.
¡Espero que esto ayude! Sé que esto funciona en Linux, pero no sé si funciona en Windows u otros sistemas operativos.
Para borrar un carácter previamente impreso tienes tres opciones:
-
echo chr(8) . " ";
hace eco del carácter posterior, y moverá el cursor hacia atrás un lugar, y el espacio sobrescribe el carácter. Puedes usarchr(8)
varias veces seguidas para retroceder varios caracteres. -
echo "\r";
devolverá el cursor al inicio de la línea actual. Ahora puede reemplazar la línea con texto nuevo. -
La tercera opción es establecer la línea y la columna de la posición del cursor mediante códigos de escape ANSI y luego imprimir los caracteres de reemplazo. Puede que no funcione con todos los terminales:
function movecursor($line, $column){
echo "\033[{$line};{$column}H";
}
\r hizo el truco.
Para referencia futura, \b no funciona en PHP en Linux. Tenía curiosidad, así que también hice un par de experimentos en otros idiomas (hice esto en Linux; no sé si el resultado será el mismo en Windows/Mac).
\b Funciona en...
- Perl
- Rubí
- Tcl - con el código
puts -nonewline "Hello\b"
\b No funciona en
- PHP - el código
print "Hello\b";
imprimeHello\b
- Python - código
print "Hello\b"
imprimeHello<new line>
. Mismo resultado conprint "Hello\b",