私は同様の問題に取り組んでいます。ビデオ変換シェル スクリプトの出力を解析する必要があります。返された の出力を使用popen
して解析しますresource
。最初は使用fgets
しましたが、更新された値が新しい行として認識されませんでした。そこで、オプションを取る単純な関数を作成して、カリアージュ リターン$arg_delimiter
などの他の戻り値の型をチェックできるようにしましたchr(13)
。私の場合、これらの関数はパーサー オブジェクトのメソッドであったため、サンプル コードは少し変更されているため、テストされていません。
function get_line ($arg_handle, $arg_delimiter = NULL)
{
$delimiter = (NULL !== $arg_delimiter) ? $arg_delimiter : chr(10);
$result = array();
while ( ! feof($arg_handle))
{
$currentCharacter = fgetc($arg_handle);
if ($delimiter === $currentCharacter)
{
return implode('', $result);
}
$result[] = $currentCharacter;
}
return implode('', $result);
}
popen()
resource
次のような結果をループするだけです。
$command = '/usr/bin/yourcommand';
$handle = popen($command . ' 2>&1', 'r');
while ( ! feof($handle))
{
$line = get_line($handle, chr(13));
preg_match($yourParserRegex, $line, $data);
if (count($data) > 0)
{
printf("<script type='text/javascript'>\n //<![CDATA[\n window.alert('Result: %s');\n // ]]>\n</script>"
,$data[1]
);
flush();
}
}
あとは、彗星のことを理解するだけです。