PHPでPOSTした結果を取得する関数:フォームの動作を模擬する

この記事は次のブログに引っ越しました。

PHPのfile_get_contents関数のPOST版ユーザ関数"file_post_contents()"を作りました。このPHPのユーザ関数で、フォームからmethodをPOSTでリクエストしたのと同じ結果が簡単に得られます。RESTを使ったサービスを利用する際の簡易的な実装にどうぞ。 file_post_contentsの使い //POSTしたいデータ $aData = array( 'name' => 'konosu', 'age' => 25 ); //POST処理とその結果の取得 $sResult = file_post_contents("http://keinos.com/", $aData); file_post_contents()関数のソース POSTでデータを取得する関数 if(!function_exists('file_post_contents')){ $aPHP_VERSION = explode('.',PHP_VERSION); if($aPHP_VERSION[0]>=5){  function file_post_contents($sURL,$aData){ if(Empty($sURL) || Empty($aData)) return "ERROR:引数が空です。"; if(!Is_Array($aData)) return "ERROR:第二引数は配列である必要があります。"; $aOptions = array( 'http' => array( 'method' => 'POST', 'content' => http_build_query($aData), ), ); return file_get_contents($sURL, false, stream_context_create($aOptions)); } } else{ function file_post_contents($sURL=null,$aData=null){ return "Error:この関数はPHP5以上でないと動作しません。"; } } } RESTについて 通常、フォームからGETもしくはPOSTで投稿(リクエスト)すると、結果が表示されます。これをPHPから動作を模擬することができるのですが、この仕組みを使って情報を提供するWEBサービスの仕組みをRESTといいます。RESTとか模擬とか格好付けてますが、例えば"http://www.google.co.jp/search?q=hoge"にアクセスもしくはポストする(リクエストする)と、HTMLで結果が表示されます。その結果がHTMLでなく、CSV,XML,JSON,SerialPHP,TEXTなどのデータ形式ですよ、ということです。PHPでRESTを利用する form_get_contents関数で、引数に"google.com?q=hoge"ようなクエリ付のURLでアクセス(リクエスト)した場合、FORMのmethodをGETにしてポストした時と同じ結果が得られます。 結果がすぐに使えるデータ形式であれば、これはGET形式のRESTということになります。$str = file_get_contents("http://hoge.com/?num=1&num=2"); 問題はPOSTでリクエストする場合で、色々と方法はあるのですが、簡単に処理できるような関数を作ってみました。お役に立つかしら?