我有一个读取文本文件的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 ...