php命令行更改文本输出

时间:2013-01-22 09:06:10

标签: php terminal command-line-interface onchange

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

#!/usr/bin/env php
<?php

$percent = 0;

for ($i = 0; $i <= 100; $i++) {

    echo $percent . "\n";

    sleep(1);

    $percent++;
}

/**
0
1
...
*/

这是一个向用户显示百分比的简单应用。所以我们必须在这个例子中的每个循环之后更新它,而不是追加它。我想改变百分比而不是显示新的。

3 个答案:

答案 0 :(得分:9)

使用\r代替\n\r是回车符,它会跳回到行的开头而没有换行符。

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

这适用于Windows,Linux和MacOS

答案 1 :(得分:2)

这样的东西应该适用于你需要的东西(在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));
}

答案 2 :(得分:1)

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