• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/web/dom/queryselectorengine.php
  • Класс: BitrixMainWebDOMQuerySelectorEngine
  • Вызов: QuerySelectorEngine::parseQueryString
public function parseQueryString($string)
{
	static $dividers = array('*', '#', '.', ' ', '>', '<', '[', ':');
	$path = array();

	$string = trim($string);
	$length = mb_strlen($string);

	$i = 0;
	while($i < $length)
	{
		$operator = '';

		$char = mb_substr($string, $i, 1);
		switch($char)
		{
			case '#':
				$operator = self::PATH_CODE_ATTR;
				$buffer = $this->writeToBuffer($string, $length, $i, $dividers);
				$path[] = array(
					'code' => $operator,
					'value' => array(
						'name' => 'id',
						'operation' => '=',
						'value' => $buffer
					)
				);
				break;

			case '.':
				$operator = self::PATH_CODE_CLASS;
				$buffer = $this->writeToBuffer($string, $length, $i, $dividers);
				$path[] = array('code' => $operator, 'value' => $buffer);
				break;

			case ' ':
				$operator = self::PATH_CODE_DESCENDANT;
				$path[] = array('code' => $operator, 'value' => '');
				++$i;
				break;

			case '>':
				$operator = self::PATH_CODE_CHILD;
				$path[] = array('code' => $operator, 'value' => '');
				++$i;
				break;

			case '<':
				$path[] = array('code' => $operator, 'value' => '');
				++$i;
				break;

			case ':':
				$operator = self::PATH_CODE_PSEUDO;
				$buffer = $this->writeToBuffer($string, $length, $i, $dividers);
				$path[] = array('code' => $operator, 'value' => $this->parseQueryStringPseudo($buffer));
				break;

			case '[':
				$operator = self::PATH_CODE_ATTR;
				$buffer = $this->writeToBuffer($string, $length, $i, [']']);
				$path[] = array('code' => $operator, 'value' => $this->parseQueryStringAttr($buffer));
				++$i;
				break;

			default:
				//throw new DomException('Wrong QuerySelector string');
				$operator = self::PATH_CODE_NAME;
				$buffer = $char;
				$buffer .= $this->writeToBuffer($string, $length, $i, $dividers);
				$path[] = array('code' => $operator, 'value' => $buffer);
		}
	}

	return $path;
}