51

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

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

ファイルではparse_STDIN.php、標準入力から 1 行ずつデータを解析できるようにしたいと考えています。

4

2 に答える 2

100

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

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

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

于 2012-08-15T11:13:03.077 に答える
16

ジェネレーターを使用することもできます - 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

于 2016-02-13T20:25:57.070 に答える