サンプル・プログラムの実行例

もくじ
サンプル・プログラムのダウンロード
searchNewBooks2.php | サンプル・プログラム本体。 |
pahooRakuten.php | 楽天ウェブサービスに関わるクラス pahooRakuten。 使い方は「PHPで最寄りのネットができるホテルを検索する」などを参照。include_path が通ったディレクトリに配置すること。 |
searchNewBooks.xml | 設定ファイル。新刊書籍の検索条件を記載する。 |
準備:pahooRakuten クラス
16: // 楽天ウェブサービス・クラス ===============================================
17: class pahooRakuten {
18: var $error; //エラー・フラグ
19: var $errmsg; //エラー・メッセージ
20: var $hits; //検索ヒット件数
21: var $webapi; //直前に呼び出したWebAPI URL
22:
23: //楽天ウェブサービス
24: //https://www.pahoo.org/e-soul/webtech/php06/php06-01-02.shtm#Rakuten 参照
25: var $APPLICATIONID = '*******************'; //アプリID
26: var $APPLICATION_SECRET = '****************'; //シークレット
27: var $AFFILIATEID = '*******************'; //アフィリエイトID
クラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。

楽天ウェブサービスには、アプリID や アフィリエイトID が必要で、その入手方法は「楽天ウェブサービス - WebAPIの登録方法」を参照されたい。
楽天ブックスの項目名をDBキーに変換
136: /**
137: * 楽天ブックスの項目名ををDBキーに変換
138: * @param string $rakuten:楽天ブックスのキー
139: * @return string DBキー/FALSE:変換失敗
140: */
141: function rakuten2db($rakuten) {
142: $table = array(
143: array('isbn', 'ISBN'),
144: array('title', 'Title'),
145: array('author', 'Author'),
146: array('publisherName', 'Publisher'),
147: array('salesDate', 'PublicationDate'),
148: array('itemPrice', 'Price'),
149: array('itemUrl', 'Url'),
150: array('smallImageUrl', 'SmallImage'),
151: array('mediumImageUrl', 'MediumImage'),
152: array('largeImageUrl', 'LargeImage'),
153: );
154:
155: $res = FALSE;
156: foreach($table as $item) {
157: if ($item[0] == $rakuten) {
158: $res = $item[1];
159: break;
160: }
161: }
162:
163: return $res;
164: }
日付文字列の正規化
222: /**
223: * 日付文字列の正規化
224: * @param string $ymd 日付文字列
225: * @return string 正規化文字列
226: */
227: function normalDate($ymd) {
228: $table = array(
229: array('/([0-9]+)年$/ui', '$1-01-01'),
230: array('/([0-9]+)年([0-9]+)月$/ui', '$1-$2-01'),
231: array('/([0-9]+)年([0-9]+)月上旬$/ui', '$1-$2-01'),
232: array('/([0-9]+)年([0-9]+)月中旬$/ui', '$1-$2-10'),
233: array('/([0-9]+)年([0-9]+)月下旬$/ui', '$1-$2-20'),
234: array('/([0-9]+)年([0-9]+)月([0-9]+)日+$/ui', '$1-$2-$3')
235: );
236:
237: $res = date('Y-m-d');
238: foreach ($table as $pat) {
239: if (preg_match($pat[0], $ymd) > 0) {
240: $res = preg_replace($pat[0], $pat[1], $ymd);
241: break;
242: }
243: }
244:
245: return $res;
246: }
ISBN→ASIN変換
参考サイト
- PHPでAmazonを利用して新刊書籍を検索:ぱふぅ家のホームページ
- PHPで楽天ブックスAPIを使って書籍検索:ぱふぅ家のホームページ
- PHPでISBNコードをASINコードに変換する:ぱふぅ家のホームページ
改良方針としては、表示や入力などのUIはそのまま、SQLite で作ったデータベースや設定ファイル CONFIG_FILE もそのまま利用できるようにする。
(2022年12月21日)不具合修正