Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/data/trading/ |
Upload File : |
<?php namespace Yandex\Market\Data\Trading; use Yandex\Market\Data\TextString; class Cis { const GROUP_SPLITTER = "\u{001d}"; /** * @deprecated * @noinspection PhpUnused */ public static function fromMarkingCode($markingCode) { if (preg_match('/^(01\d{14}21[A-Za-z0-9!"%&\'*+.\/_,:;=<>?\\\-]{13,27}?)91/', $markingCode, $matches)) { $result = $matches[1]; } else { $result = TextString::getSubstring($markingCode, 0, 31); } return $result; } public static function isSame($first, $second) { if ($first === $second) { return true; } if (mb_strtolower($first) === mb_strtolower($second)) { return true; } $firstBase = static::compareCodeBase($first); $secondBase = static::compareCodeBase($second); return ($firstBase === $secondBase); } public static function diff(array $first, array $second) { $firstCompare = array_map(static function($code) { return static::compareCodeBase($code); }, $first); $secondCompare = array_map(static function($code) { return static::compareCodeBase($code); }, $second); $diff = array_diff($firstCompare, $secondCompare); return array_intersect_key($first, $diff); } protected static function compareCodeBase($markingCode) { $symbolsCode = static::cutSplitter($markingCode); $partials = static::splitPartials($symbolsCode); return $partials !== null ? $partials[0] : static::cutSplitter($markingCode); } public static function formatMarkingCode($markingCode) { if (TextString::getPosition($markingCode, static::GROUP_SPLITTER) !== false) // already formatted { return $markingCode; } $formattedCode = static::unifySplitter($markingCode); if ($formattedCode !== $markingCode) // already contains group separator { $formattedCode = str_replace(' ', '', $formattedCode); if (TextString::getPosition($formattedCode, static::GROUP_SPLITTER) === 0) { $formattedCode = TextString::getSubstring($formattedCode, 1); } return $formattedCode; } $partials = static::splitPartials($markingCode); if ($partials !== null) { return implode(static::GROUP_SPLITTER, $partials); } return $markingCode; } protected static function unifySplitter($markingCode) { return str_replace(['<FNC1>', '<GS>', '\u001d'], static::GROUP_SPLITTER, $markingCode); } protected static function cutSplitter($markingCode) { return str_replace(['<FNC1>', '<GS>', '\u001d', static::GROUP_SPLITTER], '', $markingCode); } protected static function splitPartials($markingCode) { $result = null; $symbols = '[A-Za-z0-9!"%&\'*+.\/_,:;=<>?()\\\-]'; $testCode = str_replace(' ', '', $markingCode); $regexps = [ sprintf('/^(01\d{14}21%1$s{13,27}?)(91%1$s{4})(92.+)$/', $symbols), sprintf('/^(01\d{14}21%1$s{6}?)(91%1$s{4})(92.+)$/', $symbols), sprintf('/^(01\d{14}21%1$s{6}?)(93%1$s{4})$/', $symbols), sprintf('/^(01\d{14}21%1$s{6}?)(93%1$s{4})(3103\d{6})$/', $symbols), sprintf('/^(01\d{14}21%1$s{13}?)(93%1$s{4})$/', $symbols), ]; foreach ($regexps as $regexp) { if (!preg_match($regexp, $testCode, $matches)) { continue; } array_shift($matches); $result = $matches; } return $result; } }