我想做这样的事情:
$ [mysql query that produces many lines] | php parse_STDIN.php
在parse_STDIN.php
文件中,我希望能够从stdin逐行解析我的数据。
答案 0 :(得分:89)
使用STDIN
常量作为文件处理程序。
while($f = fgets(STDIN)){
echo "line: $f";
}
注意:STDIN上的fgets读取\n
字符。
答案 1 :(得分:15)
如果您不知道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
}
您可以在此处阅读有关生成器的更多信息(或谷歌搜索教程): http://php.net/manual/en/language.generators.overview.php