从标准定读取脚本


Script reading from STDIN

我有一个读取文本文件的php脚本。我用fgetc()一个接一个地获取每个角色。我打开文件用fopen()从中读取,然后我使用从fopen()返回的文件描述符作为fgetc()的第一个参数。我试图从STDIN阅读中做同样的事情.我想在终端中运行脚本,给它整个文本(之前在文本文件中),然后按回车键。我以为脚本会读取它并像从文本文件中读取一样运行,但它不起作用。仅当单独键入每个字符并在其后按 Enter 时,它才有效。为什么?是否有可能使脚本按照我想要的方式运行?我可以一次将全文交给终端吗?我应该使用不同的功能还是什么?

$inputFile = fopen($path, "w");
while(($char = fgetc($inputFile)) !== false){
    dosomething();
}

我想做的是用STDIN替换fgetc()中的$inputFile

请参阅 http://php.net/manual/en/features.commandline.io-streams.php,第二条评论

请注意,如果没有 stream_set_blocking() 调用,fgetcsv() 将挂在 STDIN 上,等待用户的输入,这在我们寻找管道文件时没有用。如果它还没有出现,它就不会存在。

<?php
stream_set_blocking(STDIN, 0);
$csv_ar = fgetcsv(STDIN);

我认为fgetc也是如此.毕竟是

字符串 fgetc ( 资源 $handle ) 从给定的文件指针中获取一个字符

强调我的。请参阅 http://php.net/manual/en/function.fgetc.php ...