PHPでQRコードをつくる

(1/1)
QRコード(2次元バーコード)が流行である。雑誌などに印刷してある QR コードを携帯デジカメで取り込むとURLとして解釈され、キー操作する必要なくアクセスできるという使われ方が多い。
ぱふぅ家のホームページも携帯(現在はiモードのみ)に対応しているので、PC版のトップページに QR コードを表示してみようと考えた。
Y.Swetake さんのサイトにPHPのスクリプトやクラス・ライブラリが公開されている。今回は、これを利用させていただくことにした。なお、このライブラリを利用するには、GD 2.0以上 が組み込まれている必要がある。

なお、QR コード株式会社デンソーウェーブが開発し、その規格・仕様自体はオープンであるが、QR コードという名称だけはデンソーウェーブの登録商標となっている。

(2020年12月19日)PHP8対応。全面改訂。

目次

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

PHPでQRコードをつくる

サンプル・プログラム

圧縮ファイルの内容
qr_sample.phpサンプル・プログラム本体
qr_img.phpQRcode PHP scriptsのPHP7/8対応版

準備

Y.Swetake さんのサイトから、「QRcode Perl CGI & PHP scripts ver. 0.50」をダウンロードして、適当なディレクトリに解凍する。解凍したディレクトリを、定数 QR_IMAGE に代入する。
このライブラリはPHP5.x以上に対応していないので、先ほどダウンロードした "qr_sample.zip" の中に入っている "qr_img.php" に差し替える。

0036: //qr_imgライブラリの場所
0037: define('QR_IMAGE', '../../../../common/qr_img/php/qr_img.php');

解説:QRimageのリクエストURLを取得

プログラムは、ライブラリ qr_img を呼び出すだけの簡単なものである。リクエストURLはユーザー関数 getQRimageURL によって取得する。

0129: /**
0130:  * QRimageのリクエストURLを取得
0131:  * @param string $text  QRコードにするテキスト
0132:  * @param string $error ECCレベル(L | M | Q | H)
0133:  * @param string $type  画像フォーマット(J:JPEG, それ以外:PNG)
0134:  * @param string $siz   画像サイズ
0135:  * @return stringリクエストURL
0136: */
0137: function getQRimageURL($text$error='M', $type='P', $size='4') {
0138:     return QR_IMAGE . '?d=' . urlencode($text) . '&e=' . $error . 'M&t=' . $type . '&s=' . $size;
0139: }

解説:HTML BODYを作成する

HTMLのtextareaタグを使い、QRコードにしたいテキストを入力する。
QRコードは、imgタグの中でQRimageのリクエストURLを呼び出している。

0141: /**
0142:  * HTML BODYを作成する
0143:  * @param string $text  QRコードにするテキスト
0144:  * @param string $url   QRimageリクエストURL
0145:  * @return string HTML BODY
0146: */
0147: function makeCommonBody($text$url) {
0148:     $myself = MYSELF;
0149:     $refere = REFERENCE;
0150:     $width  = WIDTH;
0151:     $title  = TITLE;
0152:     $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
0153: 
0154:     //QRコード(画像)のタグ
0155:     if ($url == '') {
0156:         $image = '';
0157:     } else {
0158:         $image = '<img src="' . $url . '}" />';
0159:     }

参考サイト

(この項おわり)
header