今日、誰かが PHPCHINA で PHP から XML を転送する方法を尋ねてきました。 、対応する解決策は上記に示されています。ところで、PHP の入力ストリームと出力ストリームについて話しましょう。
夏休みに会社にいたとき、同僚がたまたま Flash を使用してストリーミング メディアを作成し、FLASH で渡されたメディア情報 (これも XML 形式) を読み取る必要がありました。また、PHP の基本的な入力および出力ストリームの原理にも精通していました。
マニュアルには次のように書かれています。
PHP 3.0.13 以降では、PHP 4.3.0 以降 php://output と php://input をサポートし、PHP 5.0.0 以降 php://filter をサポートします。
php://stdin
php://stdout
php://stderr
php://出力
php://入力
php://フィルター
php://stdin、php://stdout、および php://stderr により、PHP プロセスの対応する入力ストリームまたは出力ストリームへのアクセスが可能になります。
php://output を使用すると、print() や echo() と同じ方法で出力バッファリング メカニズムにデータを書き込むことができます。
php://input を使用すると、POST の生データを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype="multipart/form-data" では使用できません。
php://stdin および php://input は読み取り専用ですが、php://stdout、php://stderr および php://output は書き込み専用です。
php://filter は、フィルター プログラムを開いたときにストリームになるように設計されたラッパー プロトコルです。これは、それ自体で完全な機能を持つ readfile()、file()、file_get_contents() などのファイル関数に役立ちます。そうしないと、コンテンツを読み取る前にストリームにフィルターを適用する機会がなくなるからです。
つまり、投稿の元データは php://input というファイルに保存されます。簡単なファイル操作で内部のデータを読み込むことで制御できます。
$data=file_get_contents(php://input);