68

PHP は通常、標準入力がないWeb 開発に使用されますが、PHP は、ファンキーな Web ベースの規則に従えば、汎用スクリプト言語として使用できると主張しています。PHP がandを使用してstdout(または任意の名前で) に出力することはわかっていますが、これは十分に単純ですが、PHP スクリプトがどのように入力を取得するのか(具体的には を使用しますが、任意の入力関数が適しています)、またはこれも可能ですか?printechostdinfgetc()

4

10 に答える 10

88

stdinたとえば、ファイルハンドルを作成してphp://stdinからfgets()、たとえば行に対して(または、すでに述べたようにfgetc()、単一の文字に対して)読み取ることができます。

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

while( $line = fgets( $f ) ) {
  echo $line;
}

fclose( $f );
?>
于 2009-02-16T22:08:39.507 に答える
47

STDINからの読み取りが推奨される方法です

<?php
while (FALSE !== ($line = fgets(STDIN))) {
   echo $line;
}
?>
于 2010-12-17T23:22:17.477 に答える
24

ファイルハンドルをいじる必要がないようにするには、とを使用file_get_contents()php://stdinます。

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

(本当に大量のデータを読み取っている場合はstdin、ファイルハンドルアプローチを使用することをお勧めしますが、これは何メガバイトにも適しているはずです。)

于 2012-02-27T12:09:19.813 に答える
15

簡単な方法は、

$var = trim(fgets(STDIN));
于 2012-03-26T08:33:55.397 に答える
8

fopen()で使用できますphp://stdin

$f = fopen('php://stdin', 'r');
于 2009-02-16T22:08:07.713 に答える
6

これも機能します:

$data = stream_get_contents(STDIN);
于 2015-08-14T12:55:22.823 に答える
5

IIRC、次のものも使用できます。

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

技術的には同じですが、構文が少しすっきりしています。

于 2009-02-16T23:09:29.983 に答える