2016-03-12 107 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 ...