サンプル・プログラムの実行例
目次
サンプル・プログラムのダウンロード
| searchNewBooks2.php | サンプル・プログラム本体。 |
| pahooRakuten.php | 楽天ウェブサービスに関わるクラス pahooRakuten。 使い方は「PHPで最寄りのネットができるホテルを検索する」などを参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| searchNewBooks.xml | 設定ファイル。新刊書籍の検索条件を記載する。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.2.0 | 2025/12/13 | PHP8.5対応,pahooInputData導入 |
| 2.1.1 | 2022/12/21 | bug-fix |
| 2.1 | 2021/10/24 | PHP8対応,リファラ・チェック改良 |
| 2.0 | 2020/05/30 | 書籍検索APIをAmazonから楽天ブックスに変更 |
| 1.4 | 2019/01/11 | JavaScriptのコピー機能を pahooClipboard に変更 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 3.6.4 | 2025/11/29 | PHP8.5対応:curl_closeを実行しないようにした |
| 3.6.3 | 2025/08/14 | searchVacantHotelsURL() 日本測地系にデグレード |
| 3.6.2 | 2023/07/09 | bug-fix |
| 3.6.1 | 2022/12/13 | PHP8.2対応 |
| 3.6 | 2022/02/05 | 楽天商品検索API (version:2017-07-06)に変更 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:pahooRakuten クラス
pahooRakuten.php
19: // 楽天ウェブサービス・クラス ===============================================
20: class pahooRakuten {
21: public $error; // エラー・フラグ
22: public $errmsg; // エラー・メッセージ
23: public $hits; // 検索ヒット件数
24: public $webapi; // 直前に呼び出したWebAPI URL
25:
26: // 楽天ウェブサービス
27: // https://www.pahoo.org/e-soul/webtech/php06/php06-01-02.shtm#Rakuten 参照
28: public $APPLICATIONID = ''; // アプリID
29: public $APPLICATION_SECRET = ''; // シークレット
30: public $AFFILIATEID = ''; // アフィリエイトID
31:
32: /**
33: * コンストラクタ
34: * @param なし
35: * @return なし
36: */
37: function __construct() {
38: if (isset($_ENV['PAHOO_RAKUTEN_APP_ID'])) {
39: $this->APPLICATIONID = $_ENV['PAHOO_RAKUTEN_APP_ID'];
40: }
41: if (isset($_ENV['PAHOO_RAKUTEN_APP_SECRET'])) {
42: $this->APPLICATION_SECRET = $_ENV['PAHOO_RAKUTEN_APP_SECRET'];
43: }
44: if (isset($_ENV['PAHOO_RAKUTEN_AFFILIATEID'])) {
45: $this->AFFILIATEID = $_ENV['PAHOO_RAKUTEN_AFFILIATEID'];
46: }
47:
48: // プロパティを初期化する.
49: $this->error = FALSE;
50: $this->errmsg = '';
51: $this->hits = 0;
52: $this->webapi = '';
53: }
楽天ウェブサービスには、アプリID や アフィリエイトID が必要で、その入手方法は「楽天ウェブサービス - WebAPIの登録方法」を参照されたい。
PHPのクラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。
楽天ブックスの項目名をDBキーに変換
searchNewBooks2.php
152: /**
153: * 楽天ブックスの項目名ををDBキーに変換
154: * @param string $rakuten:楽天ブックスのキー
155: * @return string DBキー/FALSE:変換失敗
156: */
157: function rakuten2db($rakuten) {
158: $table = array(
159: array('isbn', 'ISBN'),
160: array('title', 'Title'),
161: array('author', 'Author'),
162: array('publisherName', 'Publisher'),
163: array('salesDate', 'PublicationDate'),
164: array('itemPrice', 'Price'),
165: array('itemUrl', 'Url'),
166: array('smallImageUrl', 'SmallImage'),
167: array('mediumImageUrl', 'MediumImage'),
168: array('largeImageUrl', 'LargeImage'),
169: );
170:
171: $res = FALSE;
172: foreach($table as $item) {
173: if ($item[0] == $rakuten) {
174: $res = $item[1];
175: break;
176: }
177: }
178:
179: return $res;
180: }
日付文字列の正規化
searchNewBooks2.php
238: /**
239: * 日付文字列の正規化
240: * @param string $ymd 日付文字列
241: * @return string 正規化文字列
242: */
243: function normalDate($ymd) {
244: $table = array(
245: array('/([0-9]+)年$/ui', '$1-01-01'),
246: array('/([0-9]+)年([0-9]+)月$/ui', '$1-$2-01'),
247: array('/([0-9]+)年([0-9]+)月上旬$/ui', '$1-$2-01'),
248: array('/([0-9]+)年([0-9]+)月中旬$/ui', '$1-$2-10'),
249: array('/([0-9]+)年([0-9]+)月下旬$/ui', '$1-$2-20'),
250: array('/([0-9]+)年([0-9]+)月([0-9]+)日+$/ui', '$1-$2-$3')
251: );
252:
253: $res = date('Y-m-d');
254: foreach ($table as $pat) {
255: if (preg_match($pat[0], $ymd) > 0) {
256: $res = preg_replace($pat[0], $pat[1], $ymd);
257: break;
258: }
259: }
260:
261: return $res;
262: }
ISBN→ASIN変換
参考サイト
- PHPでAmazonを利用して新刊書籍を検索:ぱふぅ家のホームページ
- PHPで楽天ブックスAPIを使って書籍検索:ぱふぅ家のホームページ
- PHPでISBNコードをASINコードに変換する:ぱふぅ家のホームページ

改良方針としては、表示や入力などのUIはそのまま、SQLite で作ったデータベースや設定ファイル CONFIG_FILE もそのまま利用できるようにする。
(2025年12月06日)PHP8.5対応,pahooInputData導入
(2022年12月21日)不具合修正