• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/comparator.php
  • Класс: BitrixSaleLocationComparator
  • Вызов: Comparator::normalize
static function normalize($name)
{
	$name = self::flatten($name);

	if($name == '')
		return array('NAME' => '', 'TYPE' => '');

	$matches = array();
	$types = static::getTypes();
	$resultType = '';
	$variants = static::getVariantsValues();

	foreach($variants as $wrong => $correct)
	{
		if($name == self::flatten($wrong))
		{
			$name = $correct;
			break;
		}
	}

	foreach($types as $type => $search)
	{
		if(!is_array($search))
			continue;

		$search[] = $type;

		foreach($search as $s)
		{
			$regexp = '';
			$s = self::flatten($s);

			if(mb_strpos($name, $s.' ') !== false)
				$regexp = '/^'.$s.'s+(.*)$/i'.BX_UTF_PCRE_MODIFIER;
			elseif(mb_strpos($name, ' '.$s) !== false)
				$regexp = '/^(.*)s+'.$s.'$/i'.BX_UTF_PCRE_MODIFIER;

			if($regexp <> '' && preg_match($regexp, $name, $matches))
			{
				$name = $matches[1];
				$resultType = $type;
				break 2;
			}
		}
	}

	return array(
		'NAME' => $name,
		'TYPE' => $resultType
	);
}