替换最后一行而不是创建新行

时间:2016-04-20 16:37:09

标签: php

我在CLI和CGI模式下使用这个PHP代码

在显示下一行之前等待很短的一段时间,我不想一次显示所有五行,我想用下一行替换Line1,依此类推所有十行。

谢谢

if (!defined('STDOUT'))
    define('STDOUT', null);
if (!defined('STDERR'))
    define('STDERR', null);

function buffer($stream, $message)
{
    if (php_sapi_name() == 'cli')
    {
        // CLI - output to given stream
        fputs($stream, $message);
    }
    elseif (php_sapi_name() == 'cgi-fcgi' || ob_get_level()> 0)
    {
        // Web but output buffering is on - bypass it
        $buffer = ob_get_clean();
        echo nl2br($message).str_pad('',4096);
        flush();
        ob_start();
        echo $buffer;
    }
    else
    {
        // Web without output buffering
        echo $message;
        flush();
    }
}

for ($i = 0; $i<10; $i++) {
    buffer(STDOUT, "Line" . $i . PHP_EOL);
    sleep(1);
}

1 个答案:

答案 0 :(得分:0)

您的行结尾为\r\n,意为go to next line and return to start of line 您需要\r表示return to start of line并且回显将覆盖行内容。

请记住这种情况:

echo "Hello, my name is JJ\r";
echo "Hello, it is me";

将提供输出

Hello, it is meisJJ

echo将仅替换回显的符号数量,保持不受影响。我建议在回声结束时添加一些空格

function output($message, $lineLength = 80) {
    echo str_pad($message, $lineLength, ' ', STR_PAD_RIGHT);
}