PHP的标准input?

我知道PHP通常用于没有标准input的Web开发,但是PHP声称可以作为通用脚本语言使用,如果你遵循的是基于时髦的基于Web的约定。 我知道PHP打印到stdout (或任何你想调用它)与printecho ,这是很简单,但我想知道如何一个PHP脚本可能从stdininputstdin (具体与fgetc() ,但任何inputfunction是好的),或者这甚至可能?

可以通过创build一个文件句柄来读取stdin php://stdin ,然后用fgets()作为例子读取一行(或者fgetc()fgetc()代表单个字符):

 <?php $f = fopen( 'php://stdin', 'r' ); while( $line = fgets( $f ) ) { echo $line; } fclose( $f ); ?> 

STDIN读取是推荐的方法

 <?php while (FALSE !== ($line = fgets(STDIN))) { echo $line; } ?> 

为了避免乱搞文件句柄,使用file_get_contents()php://stdin

 $ echo 'Hello, World!' | php -r 'echo file_get_contents("php://stdin");' Hello, World! 

(如果你正在从stdin读取真正大量的数据,你可能需要使用文件句柄的方法,但是这对于许多兆字节来说应该是好的)。

一个简单的方法是

 $var = trim(fgets(STDIN)); 

你可以在php://stdin上使用fopen()

 $f = fopen('php://stdin', 'r'); 

IIRC,你也可以使用以下内容:

 $in = fopen(STDIN, "r"); $out = fopen(STDOUT, "w"); 

在技​​术上相同,但语法清晰一点。

一口气抓住这一切:

 $contents = file_get_contents("php://stdin"); echo $contents; 

这也适用:

 $data = stream_get_contents(STDIN);