サンプル・プログラムの実行例
目次
サンプル・プログラムのダウンロード
| 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 に変更 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 4.0.0 | 2026/07/04 | API移行に対応, PHP4.x/5.x系サポート終了 |
| 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対応 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 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
22: // 楽天ウェブサービス・クラス ===============================================
23: class pahooRakuten {
24: public $error; // エラー・フラグ
25: public $errmsg; // エラー・メッセージ
26: public $hits; // 検索ヒット件数
27: public $webapi; // 直前に呼び出したWebAPI URL
28:
29: // 楽天ウェブサービス
30: // https://www.pahoo.org/e-soul/webtech/php06/php06-01-02.shtm#Rakuten 参照
31: public $APPLICATIONID = ''; // アプリケーションID
32: public $ACCESSKEY = ''; // アクセスキー
33: public $AFFILIATEID = ''; // アフィリエイトID
34: public $ALLOWEDWEBSITE = ''; // 許可されたWebサイト
35:
36: /**
37: * コンストラクタ
38: * @param なし
39: * @return なし
40: */
41: function __construct() {
42: if (isset($_ENV['PAHOO_RAKUTEN_APP_ID'])) {
43: $this->APPLICATIONID = $_ENV['PAHOO_RAKUTEN_APP_ID'];
44: }
45: if (isset($_ENV['PAHOO_RAKUTEN_ACCESSKEY'])) {
46: $this->ACCESSKEY = $_ENV['PAHOO_RAKUTEN_ACCESSKEY'];
47: }
48: if (isset($_ENV['PAHOO_RAKUTEN_AFFILIATEID'])) {
49: $this->AFFILIATEID = $_ENV['PAHOO_RAKUTEN_AFFILIATEID'];
50: }
51: if (isset($_ENV['PAHOO_RAKUTEN_ALLOWEDWEBSITE'])) {
52: $this->ALLOWEDWEBSITE = $_ENV['PAHOO_RAKUTEN_ALLOWEDWEBSITE'];
53: }
54:
55: // プロパティを初期化する.
56: $this->error = FALSE;
57: $this->errmsg = '';
58: $this->hits = 0;
59: $this->webapi = '';
60: }
楽天ウェブサービスには、アプリケーションURL、アプリケーション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 もそのまま利用できるようにする。
(2026年7月5日)楽天ウェブサービスAPI移行に対応, PHP4.x/5.x系サポート終了
(2025年12月06日)PHP8.5対応,pahooInputData導入