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

使い方は、URL欄にURLを入力し、[短縮]ボタンを押下するだけというシンプルなものだ。
目次
サンプル・プログラム
shortURL.php | サンプル・プログラム本体。 |
pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
バージョン | 更新日 | 内容 |
---|---|---|
2.1.0 | 2021/04/29 | pahooInputData.php 導入 |
2.0 | 2021/04/29 | bit.ly API v4対応, PHP8対応 |
1.1 | 2017/04/08 | PHP7 対応 |
1.0 | 2010/01/04 | 初版 |
バージョン | 更新日 | 内容 |
---|---|---|
1.7.0 | 2024/10/09 | validURL() validEmail() 追加 |
1.6.0 | 2024/10/07 | isButton() -- buttonタグに対応 |
1.5.0 | 2024/01/28 | exitIfExceedVersion() 追加 |
1.4.2 | 2024/01/28 | exitIfLessVersion() メッセージ修正 |
1.4.1 | 2023/09/30 | コメントの訂正 |
bit.ly 利用準備
bit.ly によるURL短縮
入力パラメータ(IN)をPOST(JSON形式)で渡し、出力結果(OUT)はJSONで戻るというAPIである。今回はXMLで戻るようにする。
URL |
---|
https://api-ssl.bitly.com/v4/shorten |
フィールド名 | 要否 | 内 容 |
---|---|---|
long_url | 必須 | 短縮したいURL |
domain | ドメイン | bit.ly固定 |
解説:定数など
shortURL.php
27: define('REFERENCE', 'https://www.pahoo.org/e-soul/webtech/php06/php06-26-01.shtm');
28:
29: //プログラム・タイトル
30: define('TITLE', 'bit.lyを使ってURLを短縮する');
31:
32: //データ入力に関わる関数群:include_pathに配置すること
33: require_once('pahooInputData.php');
34:
35: //PHPバージョン・チェック
36: exitIfLessVersion(MINUMUM_VERSION);
shortURL.php
55: //表示幅(ピクセル)
56: define('WIDTH', 600);
57:
58: //URLの初期値
59: define('DEF_URL', 'https://www.pahoo.org/');
60:
61: //bit.lyアクセストークン
62: // https://www.pahoo.org/e-soul/webtech/php06/php06-01-02.shtm#bitly 参照
63: define('BITLY_TOKEN', '54383f0a964eed7c41269220951598afd8b82aa7');
64:
65: //URL短縮API【変更不可】
66: define('BITLYv4_SHORTEN', 'https://api-ssl.bitly.com/v4/shorten');
【変更不可】以外の部分は適宜変更することができる。
解説:URLバリデーション
pahooInputData.php
416: /**
417: * URLバリデーションを行う.
418: * RFC 1738 Uniform Resource Locators にマッチするかどうかを照合する。
419: * @参考URL https://www.pahoo.org/e-soul/webtech/php05/php05-02-01.shtm
420: * @param string $url url(http(s)を含む)
421: * @param string $errmsg エラーメッセージを格納する
422: * @return bool TRUE:成功/FALSE:失敗
423: */
424: function validURL($url, &$errmsg) {
425: $patterns[] = '/^https?\:\/\/[\-_\.\!\~\*\'\(\)a-zA-Z0-9\;\/\?\:\@\&\=\+\$\,\%\#]+$/i';
426: $errmsg = '';
427:
428: $res = validString($url, $errmsg, 1, 9999, TRUE, $patterns);
429: if ($errmsg == '受容できない文字が含まれています') {
430: $errmsg = 'URLではありません';
431: }
432:
433: return $res;
434: }
解説:bit.ly API 呼び出し
shortURL.php
148: /**
149: * bit.ly API 呼び出し
150: * @param string $url リクエストURL
151: * @param array $header HTTP HEADER変数を格納した連想配列("変数名"=>"値")
152: * @param array $post POST変数を格納した連想配列("変数名"=>"値")
153: * @return string 取得したコンテンツ/FALSE 取得エラー
154: */
155: function callBitlyAPI($url, $header, $post) {
156: //cURL送信
157: $curl = curl_init();
158: curl_setopt($curl, CURLOPT_URL , $url);
159: curl_setopt($curl, CURLOPT_HEADER, 1) ;
160: curl_setopt($curl, CURLOPT_POST, TRUE);
161: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //結果を文字列で
162: curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post));
163: curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
164: curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
165: curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
166: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
167: curl_setopt($curl, CURLOPT_TIMEOUT, 5);
168: $res1 = @curl_exec($curl);
169: $res2 = @curl_getinfo($curl);
170: curl_close($curl);
171:
172: //結果処理
173: if ($res1 != FALSE) {
174: $json = substr($res1, $res2['header_size']);
175: } else {
176: $json = FALSE;
177: }
178:
179: return $json;
180: }
入力パラメータはJSON形式に変換してからPOST渡しする必要がある。配列引数を使って渡す。
また、HTTP HEADER として、アクセストークン と Content-Typeを指定してやる必要がある。こちらも配列引数で指定するようにした。
解説:URLを短縮する
shortURL.php
182: /**
183: * URLを短縮する
184: * @param string $url 短縮したいURL
185: * @param string $token アクセストークン
186: * @param string $errmsg エラーメッセージ格納用
187: * @return string 短縮URL
188: */
189: function bitlyShortenURL($url, $token, &$errmsg) {
190: $api = BITLYv4_SHORTEN;
191: $post = array(
192: 'long_url' => $url,
193: 'domain' => 'bit.ly'
194: );
195: $header = array(
196: 'Authorization: Bearer ' . $token,
197: 'Content-Type: application/json'
198: );
199:
200: //URL短縮
201: $json = @callBitlyAPI(BITLYv4_SHORTEN, $header, $post);
202: $items = json_decode($json);
203: //エラーチェック
204: if ($items == FALSE) {
205: $errmsg = 'bit.ly APIを利用できません';
206: return FALSE;
207: } else if (isset($items->link)) {
208: $res = (string)$items->link;
209: } else {
210: $errmsg = 'bit.ly API -- GUIDを取得できません';
211: return FALSE;
212: }
213:
214: return $res;
215: }
ユーザー関数 callBitlyAPI の戻り値を json_decode で展開し、エラーチェックしたのち、短縮URLを戻す。
参考サイト
- 各種WebAPIの登録方法 - bit.ly:ぱふぅ家のホームページ
- PHPで短縮URLを元に戻す:ぱふぅ家のホームページ
- bit.ly
- bit.ly API
今回は、PHPで bit.lyを利用し、入力したURLを短縮するプログラムを作ってみることにする。
(2024年10月9日)pahooInputData.php 導入