PHP的标准input?
我知道PHP通常用于没有标准input的Web开发,但是PHP声称可以作为通用脚本语言使用,如果你遵循的是基于时髦的基于Web的约定。 我知道PHP打印到stdout
(或任何你想调用它)与print
和echo
,这是很简单,但我想知道如何一个PHP脚本可能从stdin
inputstdin
(具体与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);