Yahoo!ショッピング 商品検索 サンプルコード

Yahoo!ショッピング 商品検索のサンプルコードです。
当ホームページでは、PHP5を使用しています。PHP5が使用できない環境の方は、こちらのエックスサーバーをご検討下さい。当ホームページでも使用しているおすすめのサーバーです。

サンプルコード

「PHP プログラミング」というキーワードで、安い順に1件目から20件を取得するサンプルコードです。 サンプルコードの実行結果
検索条件を変えるには、各パラメータを指定して下さい。→ リクエストの作成へ

★★にはアプリケーションIDを、◆◆には、バリューコマース自由テキストのリンク先を入れて下さい。詳しくは、アプリケーションIDバリューコマースアフィリエイトIDを参照下さい。

Yahoo! JAPANアフィリエイトIDを使用する場合は、「$affiliate =」の部分を変更する必要があります。Yahoo! JAPAN アフィリエイトIDを参照下さい。

一部スタイルシートを使用しています。スタイルシートの本

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>Yahoo!ショッピング 商品検索サンプル</title>
<style type="text/css">
<!--
img {
	border: none;
}
table {
	margin: 10px;
	border-top: 1px solid gray;
	border-left: 1px solid gray;
}
table td {
	padding: 5px;
	border-right: 1px solid gray;
	border-bottom: 1px solid gray;
}
.image {
	width: 80px;
	text-align: center;
}
.price {
	color: #8b0000;
	font-weight: bold;
	width: 80px;
	text-align: center;
}
//-->
</style>
</head>
<body>
<?php
mb_language("Japanese"); mb_internal_encoding ("utf-8");

$num = '0';
$word = 'PHP プログラミング';

$base  = 'http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?';
$base .= 'appid=★★';

$affiliate  = '&affiliate_type=vc';
$affiliate .= '&affiliate_id=';
$affiliate .= urlencode('◆◆') .'%26vc_url%3d';

$query = '&query=' .urlencode($word);
$offset = '&offset=' .$num;
$hits = '&hits=20';
$sort = '&sort=%2Bprice';
$file = $base .$affiliate .$query .$offset .$hits .$sort;
$xml =  simplexml_load_file($file);

foreach($xml->Result->Hit as $Hit){
	$name = $Hit->Name;
	$description = $Hit->Description;
	$url = $Hit->Url;
	$small = $Hit->Image->Small;
	$medium = $Hit->Image->Medium;
	$price = $Hit->Price;

	//文字数を指定して抜き出す 60文字以上なら・・・を追加する
	$content = mb_substr($description,0,60);
	if( mb_strlen($description)>60){ $content .= '・・・'; }

print <<< page
<table width="70%" cellspacing="0" cellpadding="0">
  <tr>
    <td class="image" rowspan="2">
      <a href="{$url}" target="_blank"><img src="{$small}"</a>
    </td>
    <td><a href="{$url}" target="_blank">{$name}</a></td>
    <td class="price">{$price}円</td>
  </tr>
  <tr>
    <td colspan="2">{$content}</td>
  </tr>
</table>

page;
}
?>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">
Webサービス by Yahoo! JAPAN</a></span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>

サンプルコードの説明(PHP部分のみ)

プログラム 説明
mb_language("Japanese");
mb_internal_encoding ("utf-8");
以下で文字を抜きだすときに文字化けを防ぐためのもの
$num = '0'; 1件目から表示するため、$numに0を代入
$word = 'PHP プログラミング'; $word に検索ワード「PHP プログラミング」を代入
$base = 'http://shopping.yahooapis.jp/
ShoppingWebService/V1/itemSearch?';
基本URL
$base .= 'appid=★★'; アプリケーションIDを基本URLに追加
$affiliate = '&affiliate_type=vc';
$affiliate .= '&affiliate_id=';
$affiliate .= urlencode('◆◆') .'%26vc_url%3d';
アフィリエイトタイプにバリューコマースを設定する
バリューコマースidを指定する
◆◆にバリューコマース自由テキストのリンク先を入れる 詳細
Yahoo! JAPAN アフィリエイトIDを使用する場合は、この部分を変更します 詳細
$query = '&query=' .urlencode($word); キーワードをエンコードしてキーワードクエリを作成する
$offset = '&offset=' .$num; 何件目から表示するかを指示 今回$numは0のため、1件目から表示される
$hits = '&hits=20'; 何件表示するかの指定 今回は20件 指定しない場合は20件となる
$sort = '&sort=%2Bprice'; ソートの指定 今回は安い順
$file = $base .$affiliate .$query .$offset .$hits .$sort; クエリをつなげて、リクエストURLを作成する
$xml = simplexml_load_file($file); 返ってきたXMLを$xmlに代入する。
foreach($xml->Result->Hit as $Hit){ Hitを変数$Hitに代入する。Hit分繰り返す。
$name = $Hit->Name;他 Nameを$nameに代入する。description以下同様
//文字数を指定して抜き出す
60文字以上なら・・・を追加する
$content = mb_substr($description,0,60);
if( mb_strlen($description)>60){ $content .= '・・・'; }
$descriptionの文章が長いため、60文字を抜き出しています。60文字以上の場合は、文末に「・・・」を追加しています。
print <<< page ~ page; XMLから抜き出したデータを表示する
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->以下 クレジット表示(必須)
ホームページ WEBサービス API PHP プログラミング