Regexp - активация ссылок
5 сообщений
#14 лет назад
День добрый.Что-то я голову сломал уже. может подскажет кто:
есть текст, в нем есть ссылки типа site.ru/somelink1
но есть они и тектом, и заключенные в <a href="site1"></a>
ну или еще с атрибутами какими-то
Так вот, как можно preg_replaceом обернуть _текстовые_ ссылки в <a href="ссылка">..</a>
Спасибо.
601 сообщение
#14 лет назад
Эм... а нафига козе эм... регэксп?a = "site.ru/somelink1";
b = "текст ссылки, ну или такое же site.ru/somelink1" ;
ulr = "<a href=\"" + a + "\">" + b + "</a>";
Для php заменяй + на .
Для Perl - на ~
Ловкость рук, конкатенация и никакой ереси с preg_replace, который вполне возможно еще и не в 1 проход будет делаться...
5 сообщений
#14 лет назад
ЭмКагбе текст есть.
И в нем ссылки уже есть.
И текстов много.
Надо чтоб выводились ссылки кликабельные)
16382 сообщения
584 сообщения
#14 лет назад
Как-то так:$text='
<a href="http://ya.ru">Яндекс</a>
Текст ссылка Текст
<iframe src="http://google.com"></iframe>
';
$text = preg_replace("#()((https?|ftp)://+)()#", '$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> Текст
<iframe src="http://google.com"></iframe>
5 сообщений
#14 лет назад
SField, ага, до подобного дошел самно в случае попадания в тексте <a href="http://ya.ru">http://ya.ru</a> - на выходе получается
<a href="http://ya.ru"><a href="http://ya.ru">http://ya.ru</a></a>
а выкидывать символ > из начала регуляки. как кавычки и = - нельзя, может какой-то тег закрываться, а после него уже текстом ссылка)
вот так..
Цитата ("frig"):
ОффтопикБабанский... знакомая фамилия.
Оффтопик
О_о
16382 сообщения
5 сообщений
584 сообщения
#14 лет назад
Цитата ("disabler"):но в случае попадания в тексте <a href="http://ya.ru">http://ya.ru</a> - на выходе получается
<a href="http://ya.ru"><a href="http://ya.ru">http://ya.ru</a></a>
а выкидывать символ > из начала регуляки. как кавычки и = - нельзя, может какой-то тег закрываться, а после него уже текстом ссылка)
вот так..
$text='
<a href="http://ya.ru">Яндекс</a>
Текст ссылка Текст
<a href="http://google.com">http://google.com</a>
<iframe src="http://google.com"></iframe>
';
$text = preg_replace("#()((https?|ftp)://+)(?!<\/a>)()#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>
Оффтопик
Цитата ("frig"):
Та книжка, что я рассказывал приехала вчера. Как прочитаю 400 страниц, буду вообще, как Гендальф
SField, регулярный маг
Та книжка, что я рассказывал приехала вчера. Как прочитаю 400 страниц, буду вообще, как Гендальф
