PHP命令行更改文本输出


php command line change text output

我想知道是否有可能为特殊的php cli基础应用程序改变一些输出,以改变终端上的一些值,而不是回声新的。例如,这是cli应用程序。

#!/usr/bin/env php
<?php
$percent = 0;
for ($i = 0; $i <= 100; $i++) {
    echo $percent . "'n";
    sleep(1);
    $percent++;
}
/**
0
1
...
*/

这是一个向用户显示百分比的简单应用程序。因此,在本例中,我们必须在每个循环之后更新它,而不是附加它。

'r代替'n'r是回车,它将跳回行开头,不需要换行符。

$percent = 0;
for ($i = 0; $i <= 100; $i++) {
    echo $percent . "'r";
    sleep(1);
    $percent++;
}

Windows, Linux和MacOS

像这样的东西应该可以满足您的需要(在Linux (CentOS)机器上进行测试和验证):

for ($percent = 0; $percent <= 100; $percent++) {
    echo $percent;
    sleep(1);
    // Print one or more backspaces, erasing current character(s)
    echo str_repeat("'x08", strlen($percent));
}

这实际上取决于您的终端(模拟器)类型,而不是所使用的语言。尝试使用退格字符(0x08)来"擦除"当前内容,然后输出新内容。