• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/urlpreview/htmldocument.php
  • Класс: BitrixMainUrlPreviewHtmlDocument
  • Вызов: HtmlDocument::convertRelativeUriToAbsolute
protected function convertRelativeUriToAbsolute($uri)
{
	if (strpos($uri, '//') === 0)
	{
		$uri = $this->uri->getScheme().":".$uri;
	}

	if (preg_match('#^https?://#', $uri))
	{
		return $uri;
	}

	$pars = parse_url($uri);
	if ($pars === false)
	{
		return null;
	}

	if (isset($pars['host']))
	{
		$result = $uri;
	}
	elseif (isset($pars['path']))
	{
		if (mb_substr($pars['path'], 0, 1) !== '/')
		{
			$pathPrefix = preg_replace('/^(.+?)([^/]*)$/', '$1', $this->uri->getPath());
			$pars['path'] = $pathPrefix.$pars['path'];
		}

		$uriPort = '';
		if ($this->uri->getScheme() === 'http' && $this->uri->getPort() != '80'
			|| $this->uri->getScheme() === 'https' && $this->uri->getPort() != '443')
		{
			$uriPort = ':'.$this->uri->getPort();
		}

		$result = $this->uri->getScheme().'://'
			.$this->uri->getHost()
			.$uriPort
			.$pars['path']
			.(isset($pars['query']) ? '?'.$pars['query'] : '')
			.(isset($pars['fragment']) ? '#'.$pars['fragment'] : '');
	}
	else
	{
		$result = null;
	}

	return $result;
}