コマンドラインのシンプルなPHPスクリプトで進行状況メーターを表示できるようにしたいと思います。
_Progress: 0%
Progress: 1%
etc...
_
Git cloneがたとえばResolving deltas: 100% (8522/8522), done.
のように、数字だけを変更して、前の数字を置き換えたいです。
これを探しているときに Perlで答えられる同じ質問 を見つけました。これは完璧ですが、PHPで見つけることができませんでした。出来ますか?そうでない場合は、Cに頼ります。
ありがとう
更新:C++バージョンに興味がある人は、 ここにあります 。
これは、ANSIエスケープシーケンス- こちらを参照 を使用して実行できます。
PHPでは、そのページでESC
と示されているときに"\033"
を使用します。
あなたの場合、次のようなものを使用できます。
echo "Progress : "; // 5 characters of padding at the end
for ($i=0 ; $i<=100 ; $i++) {
echo "\033[5D"; // Move 5 characters backward
echo str_pad($i, 3, ' ', STR_PAD_LEFT) . " %"; // Output is always 5 characters long
sleep(1); // wait for a while, so we see the animation
}
少しだけ単純化して、常に5文字の余分な文字があることを確認し、常に同じ量のデータを表示して、常に同じ文字数だけ後方に移動します...
しかし、もちろん、必要に応じて、はるかに複雑なことができるはずです;-)
また、他にも多くの興味深いエスケープシーケンスがあります。たとえば、色は出力をかなり向上させることができます;-)
古いスレッドでの記録のためだけに:凝ったANSIエスケープシーケンスを使用してカーソルを戻す代わりに、次の行「\ n」の代わりに「\ r」を使用して行頭に戻します。 。エコーの後にスペースをいくつか追加して、以前にあったものを上書きします。そう:
for ($i=0 ; $i<=100 ; $i++) {
echo "Progress: $i % \r";
sleep(1);
}