はじめに

PHP で EAN13 のバーコード(コード)を生成する方法。

既存コードからバーコード画像を生成するには picqer/php-barcode-generator を利用すればいける(っぽい)。

今回はバーコード 画像 ではなく、コード(番号)そのものを生成する方法について。

TL;DR

目次

  1. はじめに
  2. TL;DR
  3. 環境・条件
  4. 詳細
  5. まとめ
  6. 参考文献

環境・条件

1
2
$ php -v
PHP 7.2.27 (cli) (built: Jan 25 2020 00:18:31) ( NTS )

詳細

基本は Generate valid EAN13 in PHP - Stack Overflow の通り。

上記ページでは引数で与えられた値をベースにしてコードを生成しているが、今回(自分の要件で)はランダム生成したかったので、ランダムなパスワードを1行で生成する - Qiita の「6. str_repeat + str_shuffle」と組み合わせた。

1
2
3
4
5
6
7
8
9
10
11
12
function generateEAN13() {
$number = substr(str_shuffle(str_repeat('0123456789', 9)), 0, 9);
$code = '200' . str_pad($number, 9, '0');
$weightflag = true;
$sum = 0;
for ($i = strlen($code) - 1; $i >= 0; $i--) {
$sum += (int)($code[$i]) * ($weightflag ? 3 : 1);
$weightflag = !$weightflag;
}
$tmp = (10 - ($sum % 10)) % 10;
return $code . $tmp;
}

以下が実行結果。

1
2
3
4
5
6
7
8
for ($i=0; $i<5; $i++) {
echo createEAN() . "\n";
}
// => 2000012341960
// 2000468781129
// 2000508261604
// 2000693402783
// 2000708864780

まとめ

参考文献

関連記事