private static function AssignMatvid($material_name1c) { // Определяем Вид материальной ценности Proc::mb_preg_match_all('/[а-яА-Яa-zA-Z\\d]+/u', $material_name1c, $match_arr, PREG_OFFSET_CAPTURE, 0, 'UTF-8'); $i = 0; $tmpmin = [1, '']; while ($i < count($match_arr[0])) { $word = $match_arr[0][$i]; $str = mb_substr($material_name1c, 0, $word[1], 'UTF-8') . $word[0]; $rows = self::GetRowsPDO('select importmaterial_combination, id_matvid from importmaterial where importmaterial_combination like :importmaterial_combination order by CHAR_LENGTH(importmaterial_combination)', ['importmaterial_combination' => $str . '%'], true); if (count($rows) === 1 && mb_stripos($material_name1c, $rows[0]['importmaterial_combination'], 0, 'UTF-8') === 0 || count($rows) > 1) { $tmpmin = [$rows[0]['id_matvid'], $rows[0]['importmaterial_combination']]; } else { break; } $i++; } unset($match_arr); unset($rows); // Если Вид материальной ценности не определен, то ставится ключ 1 со значением "Не определен" return $tmpmin[0]; }