最近PHPを使うことが多くて、Google検索すればすぐに情報見つけられるんですけど、せっかく自分のブログも持ってるんだからこっちに情報をまとめた方がいいじゃん、一石二鳥じゃん!(*´∀`*)ってことで短い記事ではありますが、PHPにて標準入力を受け取って変数に入れる方法を書きます!ぱちぱち
標準入力って何かーっていうのを説明するのはちょっと面倒くさいのですが、Linuxコマンドを知っている人には「|」パイプで渡すモノって言うとわかりやすいかもです。echo hello | php test.php ってやれば、「hello」という文字列がtest.phpの標準入力として渡されます。
例えば以下の記述。実行する環境があるなら以下のファイルを「echo.php」とでもして保存して見て欲しい
[php]<?php
$stdin = fopen(‘php://stdin’,’r’);
fscanf($stdin,’%s’,$line);
echo $line . “\n”;
exit;
?>[/php]
保存して実行する( echo hello | php echo.php )と、「hello」って表示されると思う。
簡単にポイントを押さえておくと
- $stdin = fopen(‘php://stdin’, ‘r’); で標準入力を受け取っています
- 受け取った標準入力($stdin)の中で文字列(%s)を検索(fscan)し該当するものを$lineに設定します
- $line と改行コードをechoしています
- exit; でPHPを終了させています
fopenってのはファイルを開くことが出来るものなのですが、そこに「php://stdin」を用いて標準入力を開いています(゚o゚;… ってことです(w
「php://stdin」は標準入力をファイルの様に使うためのおまじないです。
「’r’」ってのはReadonlyを意味しています。CD-RのRと同じですね。読み込みしかできません。
fscanを用いてファイルとして扱えるようになっている標準入力をスキャンして文字列を見つけたら$lineという変数に入れています。
あとはそれをechoするだけ!
fopen, fscanf, %sに関してはそれぞれのリンクをたどってちょっとお勉強するといいぜ!←えw
ここではechoをしていますが、一度標準入力から変数に値を入れられれば、いろいろとできますね!(*´∀`*)
次回は、複数行を読み取る方法をやってみるよヽ(・∀・)ノ!
コメント