-2
私はproc_open
の出力をフォーマットする機能を持っています。私はparamはすることができ、このpreg_replace()が不要なシンボルを生成しました
prepareOutput(stream_get_contents($this->pipes[1]));
のような雑多なLinuxのシェルコマンド、例えばのためにそれを使用
private function prepareOutput($output) {
$output = htmlentities($output);
$output = addslashes($output);
$output = explode("\n", $output);
$output = implode("</span><span>", $output);
$output = sprintf("<span>%s</span>", $output);
$output = preg_replace("/\r\n|\r|\n/", '\n', $output);
$output = preg_replace('/\x1B\[0m(\x1B)/', "\x1B", $output);
$output = preg_replace('/\x1B\[m/', '', $output);
$output = preg_replace('/\x07/', '', $output);
flush();
return $output;
}
。 ls
、whoami
などです。この関数は機能しますが、出力に望ましくない文字を生成します。例えばexit
のためには、以下の出力を与える:
]0;Peppermint Terminal[01;[email protected][01;34m ~ $[00m exit
logout
これら] 0。および[01; 34mおよび[00mシンボルは出力には必要ありません。彼らはどこから来たのか?
これらの文字は色付きのプロンプトです。プロンプトは端末でしか見ることができず、 'proc_open()'を使ってコマンドを実行するときは表示されません。 – axiac