这有点傻,但是我以前想做却永远无法弄清楚的事情。我有一个从命令行运行的 PHP 脚本。我想要一个小定时器动画,让用户知道脚本仍在运行。这是我所拥有的:
while (1 == 1) {
echo '—';
usleep(100000);
echo '\';
usleep(100000);
echo '|';
usleep(100000);
echo '/';
}
但是如何让每个回声替换它之前的字符呢?
这有点傻,但是我以前想做却永远无法弄清楚的事情。我有一个从命令行运行的 PHP 脚本。我想要一个小定时器动画,让用户知道脚本仍在运行。这是我所拥有的:
while (1 == 1) {
echo '—';
usleep(100000);
echo '\';
usleep(100000);
echo '|';
usleep(100000);
echo '/';
}
但是如何让每个回声替换它之前的字符呢?
您需要在每个字符之前打印一个退格键,例如:-
echo '-';
usleep(100000);
echo "\b/";
请注意,您必须在此处使用双引号,否则转义序列将不起作用。
我相信你可以解决剩下的:)
如果 "\b" 不起作用,请尝试:-
echo chr(8) . '/';
您可以使用
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
试试 php ncurses 扩展: