如何从php cli回显退格?

时间:2013-03-01 12:21:11

标签: php bash command-line-interface

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

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

e.g。

echo "Counting down 60\n";
sleep(1);
echo "\b\b\b59\n";
sleep(1);
echo "\b\b\b58\n";

但是,回声“\ b”没有做任何事情。

2 个答案:

答案 0 :(得分:9)

Strings - Double quoted开始,没有\b被识别为转义序列。您可以使用ASCII退格十六进制或八进制代码

$bs = "\x08";
echo "Counting down 60";
sleep(1);
echo "$bs$bs59";
sleep(1);
echo "$bs$bs58";

或循环一直到零

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

您也必须省略换行符\n

答案 1 :(得分:5)

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

实施例。如果你这样做:

echo 'Hello, world!' . chr(8);

结果输出为:

Hello, world