BarcodeGenerator::upc_e_normalize

  1. Bitrix24 API (v. 23.675.0)
  2. ui
  3. BarcodeGenerator
  4. upc_e_normalize
  • Модуль: 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);
}

Добавить комментарий