1

这有点傻,但是我以前想做却永远无法弄清楚的事情。我有一个从命令行运行的 PHP 脚本。我想要一个小定时器动画,让用户知道脚本仍在运行。这是我所拥有的:

while (1 == 1) {
   echo '—';
   usleep(100000);
   echo '\';
   usleep(100000);
   echo '|';
   usleep(100000);
   echo '/';
}

但是如何让每个回声替换它之前的字符呢?

4

3 回答 3

2

您需要在每个字符之前打印一个退格键,例如:-

echo '-';
usleep(100000);
echo "\b/";

请注意,您必须在此处使用双引号,否则转义序列将不起作用。

我相信你可以解决剩下的:)

如果 "\b" 不起作用,请尝试:-

echo chr(8) . '/';
于 2012-09-28T21:08:42.200 回答
1

您可以使用

echo "yourCharacter1\r";
usleep(100000);
echo "yourCharacter1\r";

或者

echo "\ryourCharacter1\r";
usleep(100000);
echo "\ryourCharacter2\r";

\r将光标返回到同一行的位置 0。

您也可以尝试(在网上找到)

system("clear"); // before you echo new characters

或者

passthru('clear'); // before you echo new characters
于 2012-09-28T21:15:21.407 回答
1

试试 php ncurses 扩展:

http://php.net/manual/en/ref.ncurses.php

于 2012-09-28T21:03:46.477 回答