簡體   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