...Человеческий поиск в разработке...
- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
- Класс: BitrixUIBarcodeBarcodeGenerator
- Вызов: BarcodeGenerator::upc_e_normalize
private function upc_e_normalize($data) { $data = preg_replace('/[^0-9*]/', '', $data); /* If exactly 8 digits, use verbatim even if check digit is wrong. */ if (preg_match( '/^([01])([0-9][0-9][0-9][0-9][0-9][0-9])([0-9])$/', $data, $m )) { return $data; } /* If unknown check digit, use verbatim but calculate check digit. */ if (preg_match( '/^([01])([0-9][0-9][0-9][0-9][0-9][0-9])([*])$/', $data, $m )) { $data = $this->upc_a_normalize($data); return $m[1] . $m[2] . substr($data, -1); } /* Otherwise normalize to UPC-A and convert back. */ $data = $this->upc_a_normalize($data); if (preg_match( '/^([01])([0-9][0-9])([0-2])0000([0-9][0-9][0-9])([0-9])$/', $data, $m )) { return $m[1] . $m[2] . $m[4] . $m[3] . $m[5]; } if (preg_match( '/^([01])([0-9][0-9][0-9])00000([0-9][0-9])([0-9])$/', $data, $m )) { return $m[1] . $m[2] . $m[3] . '3' . $m[4]; } if (preg_match( '/^([01])([0-9][0-9][0-9][0-9])00000([0-9])([0-9])$/', $data, $m )) { return $m[1] . $m[2] . $m[3] . '4' . $m[4]; } if (preg_match( '/^([01])([0-9][0-9][0-9][0-9][0-9])0000([5-9])([0-9])$/', $data, $m )) { return $m[1] . $m[2] . $m[3] . $m[4]; } return str_repeat('0', 8); }