Дмитрий Б.
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 сообщения
#14 лет назад
Регулярка для ссылок, выбираем все, потом перебираем и заменяем через str_replace на ссылку с тэгом.

Оффтопик
Бабанский... знакомая фамилия.
Себастьян Ф.
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>
Роман Беляев
16382 сообщения
#14 лет назад
Оффтопик
SField, регулярный маг
Дмитрий Б.
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 сообщения
#14 лет назад
Оффтопик
Цитата ("disabler"):
О_о


И почему вдруг О_о? Написано Днепропетровск, есть знакомый с такой фамилией. Ну как знакомый... так, знаю что он Бабанский и все практически.
Дмитрий Б.
5 сообщений
#14 лет назад
Оффтопик
Цитата ("frig"):
Оффтопик
Цитата ("disabler"):
О_о


И почему вдруг О_о? Написано Днепропетровск, есть знакомый с такой фамилией. Ну как знакомый... так, знаю что он Бабанский и все практически.


А поподробней с этого момента?)) Только в личку наверное лучше.
Себастьян Ф.
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"):
SField, регулярный маг

Та книжка, что я рассказывал приехала вчера. Как прочитаю 400 страниц, буду вообще, как Гендальф