Умное преобразование линков

svtol

Новичок
Умное преобразование линков

Вобщем пытался искать по форуму и в интернете ниче не нашел.
Итак мне нужна регулярка которая будет преобразовывать интернет адреса в ссылки, но не будет преобразовывать ссылки в черти что.
т.е.
из http://phpclub.ru/ должно получиться <a href="http://phpclub.ru/">http://phpclub.ru/</a>
<a href="http://phpclub.ru/">http://phpclub.ru/</a> должно быть проигнорированно и оставлено в исходном виде

то есть если в исходном тексте была сделана хтмл ссылка то ничего с ней не делать.

на доки по регулярке посылать не надо. я не врубаюсь нифига как это сделать, читая доки.
мне нужен хотя бы пример решения подобной задачи - обработка выражения только в случае если оно не заключено в кавычки или в таг <a>
 

iceman

говнокодер
заменить все <a href="http://phpclub.ru/">http://phpclub.ru/</a> на http://phpclub.ru/
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
svtol
Уважаемый
В форуме не дают готовых решений
 

Фанат

oncle terrible
Команда форума
svtol
ну, хотя бы первую задачу ты решить можешь?
 

Vin-Diesel

Новичок
svtol
попробуй так:
PHP:
str_replace('http://phpclub.ru/','<a href="http://phpclub.ru/">http://phpclub.ru/</a>',$text);
 

svtol

Новичок
ой блин нафлудили то че...
я знаю как решить первую задачу, но не знаю как проигнорировать преобразование во втором варианте.
 

planarik

Новичок
PHP:
$a=array("http://phpclub.ru/","<a href=\"http://phpclub.ru/\">http://phpclub.ru/</a>");
foreach ($a as $b)
{
	echo $b." is ";
 	echo preg_replace("|(<a.*)?(http://[^>]*\\..*)(</a>)?|i",'<a href="\\2">\\2</a>',$b);
	echo "<br>\n";
 	
}
Вроде работает...
 

planarik

Новичок
На выходе получается:
http://phpclub.ru/ is <a href="http://phpclub.ru/">http://phpclub.ru/</a><br>
<a href="http://phpclub.ru/">http://phpclub.ru/</a> is <a href="http://phpclub.ru/</a>">http://phpclub.ru/</a></a><br>

Грубо говоря, если попадается ссылка, то она заменяется такой же ссылкой, а если просто http://bla.ru то все равно замена на ссылку.

Правильно?

но надо доработать, сможешь?
 

Фанат

oncle terrible
Команда форума
нет, не смогу.
зачем писать на форуме то, что надо дорабатывать?
 

planarik

Новичок
А так вообще изумительно:

$a=array("http://phpclub.ru/","<a href=\"http://phpclub.ru/\">http://phpclub.ru/</a>");
foreach ($a as $b)
{
echo $b." is ";
echo preg_replace("|(<a.*)?(http://.\\..+)(</a>)?|i",'<a href="\\2">\\2</a>',$b);
echo "<br>\n";

}

на выходе

http://phpclub.ru/ is http://phpclub.ru/<br>
<a href="http://phpclub.ru/">http://phpclub.ru/</a> is <a href="http://phpclub.ru/">http://phpclub.ru/</a><br>
 

svtol

Новичок
блин че то ваще не понял замутки с массивом...
вобщем суть вот в чем.
есть блоги. юзер может запостить в пост алдрес типа http://блабла
а может сделать и <a href="http://блабла">http://блабла</a>
если я регекспом преобразую все что с http в линки то из второго варианат получается что то не воспроизводимое
а мне нужно что бы в текте преобразовались только голые линки
 

Фанат

oncle terrible
Команда форума
planarik
я, кстати, тоже не понял замутки с массивом.
почему нельзя было просто текст написать?

-~{}~ 07.07.07 10:49:

и что ты изумительного в своем коде нашел?
 

planarik

Новичок
*****
А то что фигня какая-то творится. В один проход не выходит - только так:
PHP:
$a=array("And this not is ANCHOR http://phpclub.ru/ or not?",'And this is ANCHOR <a href="http://phpclub.ru/">http://phpclub.ru/</a> or not?');
foreach ($a as $b)
{
	$b1=preg_replace('|<a.*?>(http://.*?)</a>|U','\\1',$b);
	$b1=preg_replace('|(http://\S*?)|U','<a href="\\1">\\1</a>',$b1);
	echo "$b is $b1";
 	echo "<br>\n";
}
На выходе:

And this not is ANCHOR http://phpclub.ru/ or not? is And this not is ANCHOR <a href="http://phpclub.ru/">http://phpclub.ru/</a> or not?<br>
And this is ANCHOR <a href="http://phpclub.ru/">http://phpclub.ru/</a> or not? is And this is ANCHOR <a href="http://phpclub.ru/">http://phpclub.ru/</a> or not?<br>

т.е. сначала ссылки приводим к виду http://blabla, а потом обратно все приводим к ссылкам. По другому, у меня по крайней мере, не получается.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
есть блоги. юзер может запостить в пост алдрес типа http://блабла
а может сделать и <a href="http://блабла">http://блабла</a>
Такие возможности юзеру вряд-ли нужны
[m]strip_tags[/m]
 

Фанат

oncle terrible
Команда форума
блин, у вас что - массовое помешательство?
неужели один я понимаю, что автору нужно?
при чем здесь strip_tags?
 
Сверху