Так текст с Галустяном и был тестовым :) В общем мы долго копали в сторону всяких там опережающих условий, но в итоге нам помог вот такой шаблон '@((^|[\n ])([0-9a-zа-я\.-]{2,})\.('.$domains.')(/[^.\s][^,\s][^\s]*)?)@iu';
Затем ферез функцию которая делает ссылки, и да я тут погарячился мы не учитываем http: в шаблоне, мы просто разбиваем текст на слова и работаем как можем :) (деревянные мы в регулярках чего уж там скрывать):
function render_links($text, $only_domain = false, $new_window = true)
{
$str='';
$domains= 'ru|com|net';
$pattern = '@(([0-9a-zа-я.-]{2,})\.('.$domains.')(/[^\s\.,]*)?)@iu';
if ($new_window) $attr = 'target="_blank"';
else $attr = '';
if ($only_domain) $domain = '$1.$2';
else $domain = '$0';
$a = explode(" ", $text);
foreach ($a as $s)
{
$http='http://';
if (mb_strpos($s,'https://') !== false) $http='https://';
$s = str_replace(array('https://','http://'), " ", $s);
$replace = ''. $domain .'';
$str.= preg_replace($pattern, $replace, $s).' ';
}
Вот видео про Михаила Галустяна www.youtube.com/watch?v=9LyreguVBtI, а еще у него есть свой сайт galustyan.ru/. Если этой информации вам будет мало вы можете найти подробности про него через сайт yandex.ru.
Спасибо за ответ, но мы уже пытались так сделать, я забыл упомянуть. Почему-то не срабатывает, очевидно что парсер просто берет ссылку внутри кавычек игнорируя их как и требует шаблон. Заказчик поставил условие чтобы ссылками было все что заканчивается на домен верхнего уровня (их у нас больше в шаблоне) по-этому проверка на http не требуется, но ссылки с ними также попадают в данный шаблон. Суть в том что кроме переделывания ссылок в реальные ссылки мы еще парсим ссылки на ютюб и переделываем их на встроенное видео, в итоге в тексте появляется тег и внутри атрибута src ссылка всегда будет в двойных кавычках. Если поменять порядок парсеров, то проблему тоже не решить т.к. ссылка на ютюб просто станет обычной ссылкой внутри которой второй парсер сделает фрейм.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.