サンプル・プログラムの実行例
もくじ
サンプル・プログラムのダウンロード
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日)不具合修正