如何从php cli回显退格?

Ben*_*ird 8 php bash command-line-interface

这个问题:https://askubuntu.com/questions/16149/overwrite-previous-output-in-bash-instead-of-appending-it

解释如何将倒计时作为bash脚本.我想做同样的事情,但我需要用PHP来做.有没有办法回应退格?

例如

echo "Counting down 60\n";
sleep(1);
echo "\b\b\b59\n";
sleep(1);
echo "\b\b\b58\n";
Run Code Online (Sandbox Code Playgroud)

但是,回声"\ b"没有做任何事情.

Ola*_*che 10

字符串 - 双引号,没有被\b认为是一个转义序列.您可以使用ASCII退格十六进制或八进制代码

$bs = "\x08";
echo "Counting down 60";
sleep(1);
echo "$bs$bs59";
sleep(1);
echo "$bs$bs58";
Run Code Online (Sandbox Code Playgroud)

或者循环一直到零

$bs = "\x08";
for ($i = 59; $i >= 0; --$i) {
    sleep(1);
    printf("$bs$bs%2d", $i);
}
Run Code Online (Sandbox Code Playgroud)

您也必须省略换行符\n.


小智 6

退格字符对应于ASCII字符代码8,因此您可以使用PHP的char()函数输出它.

防爆.如果你做的事情如下:

echo 'Hello, world!' . chr(8);
Run Code Online (Sandbox Code Playgroud)

结果输出是:

Hello, world
Run Code Online (Sandbox Code Playgroud)