[PHP-users 22473]Re: Amazonwebサービスでheavyでの取得

Masayuki AOKI info @ martin.bz
2004年 7月 3日 (土) 12:45:05 JST


こんにちはmartinです。

>私も、XSLTは考えたのですが、いまいち、理解していないところもあり、
>検索結果を自由に加工しづらくて困っています。

 検索結果をそのまま生かしページを構成するのであればXSLTを使って加工
するのが妥当でしょうし,結果をPHPのページに動的に埋め込みたいというこ
とであれば,GETで取得してPHPの配列なりに入れ込むのが容易でしょうね。

自分は後者の方法を使用していますが,その簡単な例を例示しておきます。
基本的にマニュアル(http://jp.php.net/function.fsockopen)通りです。
 結果はUTF-8で返ってきます。上手くいけば,「オイラー・・・」というブック
情報が返ってくるはずです。またこの例ではAsinSearchですが,KeywordSearch
でもいけると思います。渡す文字列は日本語ならエンコードが必要でしょうが。

<?php

$url = 'http://xml-jp.amznxslt.com/onca/xml3?'
     . 'dev-t=D2BUEA9DCZZ5YB&' // developer token, any
     . 'f=xml&'
     . 't=foo-22&' // associate ID, any
     . 'locale=jp&'
     . 'type=heavy&'
     . 'AsinSearch=4480086757'; //otherwise KeywordSearch

function my_GET_HTTP($url){
 $url = parse_url($url);
 $url['query'] = isset($url['query']) ? '?'.$url['query'] : '';
 $url['port'] = isset($url['port']) ? $url['port'] : 80;
 $reply = '';

 $request  = "GET ".$url['path'].$url['query']." HTTP/1.0\r\n";
 $request .= "Host: ".$url['host']."\r\n";
 $request .= "User-Agent: PHP/".phpversion()."\r\n\r\n";

 if(!$fp = fsockopen($url['host'], $url['port'])){
  $reply .= die('CONNECTION ERROR');
 }
 fputs($fp, $request);

 while (!feof($fp)) {
  $reply .= fgets($fp, 4096);
 }
 fclose($fp);
 
 return $reply; // get output
}

// print_r(my_GET_HTTP($url));
?>

色々試されて下さい。

/*
Masayuki AOKI: maoki @ bioreg.kyushu-u.ac.jp
     HomePage: http://martin.bz
*/



PHP-users メーリングリストの案内