tl; dr strpos($haystack, '^[[H^[[2J')
をPHPで書くにはどうすればよいですか?文字列のコンソールエスケープコードの位置を見つける
linuxコマンドラインアプリでは、画面全体にデータが格納され、コンソールエスケープコードが続き、カーソルが通常のループの「ホーム」位置に戻ります。私のようなので、自分のスクリプトに出力を渡されたデータにアクセスするには:私はthis example for non-blocking stream consumptionを使用するよう
$ ./otherapp | php myscript.php
をこれは、データの連続ストリームです。
出力をデコードするには、フル・フレーム/画面いっぱいのデータを取得する必要があります。エスケープコードは、^[[H
と^[[2J
と表示されます。最も簡単な方法は、これらのエスケープコードを検出し、それらの間の出力を使用することです。
PHP文字列でエスケープコードをどのように表していますか?彼らの位置を検出するのにstrpos
(または同等のmbstring)を使用できますか?
'^ ['は端末制御シーケンスです。それはリテラル '^'の後にリテラル '['、etc ...]があります。その視覚的表現は2つの文字 '^ ['です。それはascii char(27)です。 –
_エスケープコードはPHPの文字列でどのように表現されていますか?_ _このような位置にあるデータに含まれるバイト値を簡単に調べるには、 'urlencode'のようなものを使用します。次に、\ xまたは\ u [二重引用符で囲まれた文字列リテラルの構文](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double)を使用して、 euqvalent文字を含む文字列を使用して、検索と置換または分割に使用します。 – CBroe