2016-03-12 75 views
0

我有一个读取文本文件的php脚本。我使用fgetc()来逐个获取每个角色。我打开文件从fopen()读取,然后我使用从fopen()返回的文件描述符作为fgetc()的第一个参数。我试图从STDIN中读取相同的内容。我想在终端中运行该脚本,并将其全文(前面是一个文本文件)并按回车键。我认为脚本会读取它,并且会像从文本文件中读取一样运行,但它不起作用。它只适用于每个单独的字符类型,并按下输入后。这是为什么?有没有可能让剧本按照我想要的方式行事?我可以把整个案文一次全部提供给终端?我应该使用不同的功能还是其他?从STDIN读取的脚本

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

我想要做的是与STDIN更换$inputFilefgetc()

+0

和代码在哪里? –

+0

对不起,我以为自己清楚地表达了自己,我添加了代码。 – sykatch

回答

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相同。毕竟这

串龟etc(资源$处理)获取给定的文件指针字符

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