我有一个读取文本文件的php脚本。我使用fgetc()
逐个获取每个角色。我打开文件以使用fopen()
进行读取,然后使用从fopen()
返回的文件描述符作为fgetc()
的第一个参数。我试着从STDIN
阅读来做同样的事情。我想在终端中运行脚本,给它整个文本(之前在文本文件中),然后按回车键。我认为脚本会读取它并将像从文本文件中读取一样运行,但它不起作用。它仅适用于单独输入每个字符并在其后输入的情况。这是为什么?是否有可能使脚本按我想要的方式运行?我可以立刻把它全文发给终端吗?我应该使用不同的功能吗?
$inputFile = fopen($path, "w");
while(($char = fgetc($inputFile)) !== false){
dosomething();
}
我要做的是用$inputFile
替换fgetc()
中的STDIN
。
答案 0 :(得分:1)
请参阅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
也是如此。毕竟它
string fgetc(resource $ handle)从给定的文件指针中获取字符。
强调我的。 见http://php.net/manual/en/function.fgetc.php ...