2010年5月28日金曜日

リクエストでファイルを取得

BOMBの仕事で、au側の継続課金データを取得する必要がある。
そのためには、「curl」を使うのではなく、「fsockopen」を使った方が、
良いみたいなので、記録。

PHPでPOSTさせる方法(fsockopen編) + NarutyoNet
if($fp = fsockopen($_TARGET_PARSE['host'],80)){
fputs ($fp, "POST ".$_TARGET_PARSE['path']." HTTP/1.1\r\n");
fputs ($fp, "User-Agent:PHP/".phpversion()."\r\n");
fputs ($fp, "Host: ".$_SERVER["HTTP_HOST"]."\r\n");
fputs ($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs ($fp, "Content-Length: ".strlen($request )."\r\n\r\n");
fputs ($fp, $request);
while (!feof($fp)) {
$response .= fgets($fp,4096);
}
fclose($fp);
}


ここで、「fgets」ではなく「fgetcsv」を使えばOK。
以下を参考。
fgetcsv - ファイルポインタから行を取得し、CSVフィールドを処理する
array fgetcsv ( resource $handle [, int $length [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] )

fgets() に動作は似ていますが、 fgetcsv() は行を CSV フォーマットのフィールドとして読込み処理を行い、 読み込んだフィールドを含む配列を返すという違いがあります。

0 件のコメント:

コメントを投稿