web-dev-qa-db-ja.com

STDINから1行ずつ読み取る

私はこのようなことをしたい:

$ [mysql query that produces many lines] | php parse_STDIN.php

parse_STDIN.php file stdinから1行ずつデータを解析できるようにしたい。

45
sobi3ch

STDIN定数をファイルハンドラとして使用します。

while($f = fgets(STDIN)){
    echo "line: $f";
}

注:STDINのfgetsは、\n文字を読み取ります。

90
Shiplu Mokaddim

ジェネレーターを使用することもできます-STDINの大きさがわからない場合。

必須PHP 5> = 5.5.0、PHP 7

以下の線に沿ったもの:

function stdin_stream()
{
    while ($line = fgets(STDIN)) {
        yield $line;
    }
}

foreach (stdin_stream() as $line) {
    // do something with the contents coming in from STDIN
}

ジェネレーターの詳細については、こちら(またはチュートリアルのGoogle検索)を参照してください: http://php.net/manual/en/language.generators.overview.php

15
Luis Colón