• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Entity/Url/UrlItem.php
  • Класс: BitrixImV2EntityUrlUrlItem
  • Вызов: UrlItem::getUrlsFromText
static function getUrlsFromText(?string $text): array
{
	if ($text === null)
	{
		return [];
	}

	$textParser = static::getTextParser();
	$text = $textParser->convertText($text);

	$text = preg_replace('/-{54}.+?-{54}/s'.BX_UTF_PCRE_MODIFIER, "", $text);
	$text = preg_replace('/[CODE](.*?)[/CODE]/si'.BX_UTF_PCRE_MODIFIER, "", $text);

	preg_replace_callback(
		'/^(>>(.*)(n)?)/mi'.BX_UTF_PCRE_MODIFIER,
		static fn() => " XXX",
		$text
	);

	$result = [];
	preg_replace_callback(
		'/[url(=(?P[^]]+))?](?P.*?)[/url]/i'.BX_UTF_PCRE_MODIFIER,
		static function (array $matches) use (&$result) {
			$link = !empty($matches['URL'])? $matches['URL']: $matches['TEXT'];
			if (!empty($link))
			{
				$link = static::normalizeUrl($link);
				if (static::isUrlValid($link))
				{
					$result[] = $link;
				}
			}
		},
		$text
	);

	return $result;
}