我知道PHP通常用于web开发,那里是没有标准的输入,但是PHP声称是可用作通用脚本语言,如果你不遵循这是时髦的基于web的约定.我知道PHP打印到stdout
(或者你想要调用的任何东西)print
和echo
,这很简单,但我想知道PHP脚本如何从中获取输入stdin
(特别是fgetc()
,但任何输入函数都是好的),或者是这甚至可能吗?
可以stdin
通过创建文件句柄来php://stdin
读取,然后从中读取fgets()
一行(例如,如您所说,fgetc()
对于单个字符):
从阅读STDIN被推荐的方式
为了避免乱丢文件句柄,请使用file_get_contents()
和php://stdin
:
$ echo 'Hello, World!' | php -r 'echo file_get_contents("php://stdin");' Hello, World!
(如果您正在从中读取真正大量的数据,stdin
可能需要使用文件句柄方法,但这应该适用于许多兆字节.)
一个简单的方法是
$var = trim(fgets(STDIN));
您可以使用fopen()
上php://stdin
:
$f = fopen('php://stdin', 'r');
一次抓住一切:
$contents = file_get_contents("php://stdin"); echo $contents;
IIRC,您也可以使用以下内容:
$in = fopen(STDIN, "r"); $out = fopen(STDOUT, "w");
技术上相同,但语法更清晰.