AlphaNum.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 18.4, at vendor_prefixed/chillerlan/php-qrcode/src/Data/AlphaNum.php
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Class AlphaNum |
| 5 | * |
| 6 | * @filesource AlphaNum.php |
| 7 | * @created 25.11.2015 |
| 8 | * @package chillerlan\QRCode\Data |
| 9 | * @author Smiley <smiley@chillerlan.net> |
| 10 | * @copyright 2015 Smiley |
| 11 | * @license MIT |
| 12 | */ |
| 13 | namespace YoastSEO_Vendor\chillerlan\QRCode\Data; |
| 14 | |
| 15 | use YoastSEO_Vendor\chillerlan\QRCode\QRCode; |
| 16 | /** |
| 17 | * Alphanumeric mode: 0 to 9, A to Z, space, $ % * + - . / : |
| 18 | */ |
| 19 | class AlphaNum extends \YoastSEO_Vendor\chillerlan\QRCode\Data\QRDataAbstract |
| 20 | { |
| 21 | const CHAR_MAP = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', '+', '-', '.', '/', ':']; |
| 22 | /** |
| 23 | * @inheritdoc |
| 24 | */ |
| 25 | protected $datamode = \YoastSEO_Vendor\chillerlan\QRCode\QRCode::DATA_ALPHANUM; |
| 26 | /** |
| 27 | * @inheritdoc |
| 28 | */ |
| 29 | protected $lengthBits = [9, 11, 13]; |
| 30 | /** |
| 31 | * @inheritdoc |
| 32 | */ |
| 33 | protected function write($data) |
| 34 | { |
| 35 | for ($i = 0; $i + 1 < $this->strlen; $i += 2) { |
| 36 | $this->bitBuffer->put($this->getCharCode($data[$i]) * 45 + $this->getCharCode($data[$i + 1]), 11); |
| 37 | } |
| 38 | if ($i < $this->strlen) { |
| 39 | $this->bitBuffer->put($this->getCharCode($data[$i]), 6); |
| 40 | } |
| 41 | } |
| 42 | /** |
| 43 | * @param string $chr |
| 44 | * |
| 45 | * @return int |
| 46 | * @throws \chillerlan\QRCode\Data\QRCodeDataException |
| 47 | */ |
| 48 | protected function getCharCode($chr) |
| 49 | { |
| 50 | $i = \array_search($chr, $this::CHAR_MAP); |
| 51 | if ($i !== \false) { |
| 52 | return $i; |
| 53 | } |
| 54 | throw new \YoastSEO_Vendor\chillerlan\QRCode\Data\QRCodeDataException('illegal char: "' . $chr . '" [' . \ord($chr) . ']'); |
| 55 | } |
| 56 | } |
| 57 |