今日、誰かが PHPCHINA で PHP から XML を転送する方法を尋ねてきました。 、対応する解決策は上記に示されています。ところで、PHP の入力ストリームと出力ストリームについて話しましょう。
私が夏休み中に会社にいたとき、同僚はたまたま Flash を使用してストリーミング メディアを作成し、FLASH At によって渡されたメディア情報 (これも 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://output
php://input
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);