Как регуляркой найти в тексте, неоформленные url и вставить их как ссылку..
$text=' <a href="http://ya.ru">Яндекс</a> Текст http://ya.ru/index.php?param=1#anchor Текст <a href="http://google.com">http://google.com</a> <iframe src="http://google.com"></iframe> '; $text = preg_replace("#([^\"'=])((https?|ftp)://[^'\"<>\n\r ]+)(?!<\/a>)(['\"<>\n\r ])#i", '\\1<a href="\\2">\\2</a>\\4', $text);
результат:
<a href="http://ya.ru">Яндекс</a> Текст <a href="http://ya.ru/index.php?param=1#anchor">http://ya.ru/index.php?param=1#anchor</a> Текст <a href="http://google.com">http://google.com</a> <iframe src="http://google.com"></iframe>
Комментарии (4)
$text = 'dsfsdfsdf http://www.site-name.ru/ ? dsfsdfsdf';
$text = preg_replace("#([^\"'=])((https?|ftp)://[^'\"<>\n\r ]+)(?!<\/a>)(['\"<>\n\r ])#i", '\\1 \\2 <a href="\\2"title="Открыть Ссылку в Новом Окне" target="_blank" rel="nofollow">открыть</a>\\4', $text);
echo $text;
получится:
Виталий спасибо за прекрасную функцию, оказывается всё работает very good
Пожалуйста, рад что помог :)
здравствуйте, помогите подправить ваш код, у меня есть ссылка в тексте:
$detail_t="dsfsdfsdf http://www.site-name.ru/ ? dsfsdfsdf";
При использовании кода
$detail_t = preg_replace("#([^\"'=])((https?|ftp)://[^'\"\n\r ]+)(?!)(['\"\n\r ])#i", '\\1 \\2 <a href="\\2" title="Открыть Ссылку в Новом Окне" target="_blank" rel="nofollow">открыть</a>\\4', $detail_t);
echo $detail_t;
Получаю неправильную ссылку
"http://www.site-name.ru/ ?"
помогите подправить код - чтобы он ссылку брал до первого пробела.