質問

知っていPHPがあるわけですからこれらの使用の発生はあ 標準的な入力ですが、PHPの主張として使用できる汎用のスクリプティング言語の場合なのでファンキーなwebコンベンションに出かけていく。知っているPHP品 stdout (あい)と printecho, は、単純であるが、私はどんな風にPHPスクリプトが入力からの stdin (具体的に fgetc(), すが、その入力機能)、またはこでも可能ですか?

役に立ちましたか?

解決

(1文字を、stdinをすでに述べたように、または)php://stdin、その後、例えばラインのためfgets()でそれからの読み取りにファイルハンドルを作成することにより、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));

あなたが使用することができます 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");

技術的には同じですが、少しクリーナー構文ワイズます。

これも動作します:

$data = stream_get_contents(STDIN);

使用時fgetsでブロックbashのスクリプトの場合、 stdin なセットまたは空のを含むのものを使いながら @ phpのエラー制御のオペレーター.

#!/usr/bin/php
<?php
$pipe = @trim(fgets(STDIN));
// Script was called with an empty stdin
// Fail to continue, php warning 

この動作をすることを確認することにより、設定 stream_set_blocking のphpヘッダ:

#!/usr/bin/php
<?php
stream_set_blocking(STDIN, 0);
$pipe = @trim(fgets(STDIN));
// Script was called with an empty stdin
// No errors or warnings, continue 
echo $pipe . "!";

を例にとるという。

echo "Hello world" | ./myPHPscript
// Output "Hello world!"
./myPHPscript
// Output "!"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top