замена url на ссылку

DJ_Petrovich

Новичок
замена url на ссылку

в строковой переменной есть список url'ов, например:

http://www.site1.ru/
http://www.site1.ru/?po=17u6
http://www.site1.ru/dir/
http://www.site2.ru/dir5/
http://www.site3.ru/dir2/

нужно заменить их с помощью регулярных выражений на ссылки, например
<a href="http://www.site1.ru/">http://www.site1.ru/</a>
<a href="http://www.site1.ru/?po=17u6">http://www.site1.ru/?po=17u6</a>
<a href="http://www.site1.ru/dir/">http://www.site1.ru/dir/</a>
<a href="http://www.site2.ru/dir5/">http://www.site2.ru/dir5/</a>
<a href="http://www.site3.ru/dir2/">http://www.site3.ru/dir2/</a>

пишу так:
PHP:
preg_match_all('/\bhttp:\/\/[[:print:]]+\b/sm', $text_post, $check_url);	# считаем количество ссылок 
for ($k = 0; $k < count($check_url[0]); $k++) {  			
   $text_post = str_replace($check_url[0][$k], ('<a href="'.$check_url[0][$k].'">'.$check_url[0][$k].'</a>'), $text_post);	
}
но одинаковые url с небольшими отличиями он заменяет по несколько раз
что нужно изменить?
 

DJ_Petrovich

Новичок
мдя
и правда начудил я чо то...
оказывается все вот так просто:
$text_post = preg_replace('/(http:\/\/[[:print:]]+)/sm', '<a href=\"$1\">$1</a>', $text_post);

надо больше спать....
 

Michael_X

Guest
он всеравно будет у тебя по несколько раз заменятся...
надо будет свою функцию написать, которая все делала-бы тебе...
там все будет завязано на длинне строки и о "переходе" на несколько символов после замены (это просто наталкиваю на мысль, сам так игрался и тоже не получалось пока не написал свою функцию)
 

DJ_Petrovich

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

т.е. как выставить условие: "что не должно быть в начале одинарной, двойной кавычки или знака равно"



Michael_X, все нормально работает
 
Сверху