繁体   English   中英

PHP CLI,Windows 7 CMD和CLS / FF需要相处。 (从CLI清除Win7 CMD和PHP)

[英]PHP CLI, Windows 7 CMD, and CLS/FF need to get along. (Clear Win7 CMD with PHP from CLI)

好吧,现在,我一直在寻找一种方法来实现这一点,显然互联网上没有人知道是什么。 通过互联网我的意思是谷歌的范围。

我正在用PHP编写终端应用程序,以便在Windows 7(x64 Ultimate)的花哨命令提示符下运行PHP CLI。 在程序中,我想清除屏幕。 屏幕上显示的数据可以是跨越任意数量的行的任意数量的字符。 我不想要任何退格字符黑客或使用回车的说明。 我想清除屏幕。

CMD有一个奇特的CLS命令就是这么做的。 所以,当我运行PHP行system('cls'); 或执行清除屏幕命令的任何变化(包括说使用system("command /C cls");一个答案system("command /C cls");这不起作用)终端输出金星符号。 女孩的标志,“颠倒的圣手榴弹”,无论你想称呼它。 事实证明,这显然是一种显示换行符的方法(如果终端实际上​​表现得如此,则会清除屏幕。)

为什么PHP CLI认为显示CMD女孩会清除屏幕,我怎样才能让CMD 真正清除? 我试过给它发送一个换行符,给它发送一个女孩符号,发送它的筹码和饼干以及所有形式的好东西。 没有任何效果。 所以屏幕将永远不清楚,你可以想象当你不得不重新画一些东西时会很烦人。 无论如何,欢迎你的帮助。

是迄今为止我发现的唯一但非常难看的方式:

public function clearStdin()
{
    for ($i = 0; $i < 50; $i++) echo "\r\n";
}

经过多次搜索,我终于找到了一个适用于Windows 7的依赖于ANSI的答案:

echo chr(27)."[H".chr(27)."[2J";

这在我的标准控制台中适用,因为我安装了Ansicon ...如果您遇到问题,可能需要尝试使用Console2

如果您正在向公众分发CLI,那么这个解决方案不够好,但对于内部使用它可能是可接受的(即,如果您可以在所有机器上运行ANSI)。

在试图找到解决方案之后,花了近一个小时没有运气,答案就在我面前......

这是一个有点旧的ASCII命令的skool方法,它仍然适用于Windows DOS(大多数情况下)......我用它来改变输出的颜色。

如果您为转义键“\\ 033”的八进制引用,则DOS转义字符“[”和一个可以执行许多不同任务的键代码,例如更改颜色和...清除屏幕:)

使用以下命令清除php中的屏幕作为echo语句(我没有设法让system()使用此命令,但echo对我来说已经足够了)。

echo "\033[2J"; //clears the screen
echo "\033[1;1H"; //resets pointer back to 1,1 (top, left)

我真的希望这有助于某人:)

进一步阅读: http//www.robvanderwoude.com/ansi.php

干杯达尔

找到一种简单的方法,如果你从批处理文件运行PHP(我在Win7 x64终极上使用XAMPP):

cls
@c:\xampp\php\php program_to_run.php

这个批处理文件在运行PHP之前会清除屏幕,甚至不会再显示命令promt,因为行的开头是@。 结果:从清晰的控制台屏幕开始!

你也可以使用\\ r来到一行的开头,所以如果你只需要重绘一行 (例如一个进度指示器),这可以是一个解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM