Есть очень хорошая функция: Код (PHP): function hyperlink($text) { $text = preg_replace("/(([a-z]+:\/\/)?(?:[a-zа-я0-9@:_-]+\.)+[a-zа-я0-9]{2,4}(?(2)|\/).*?)([-.,:]?(?:\\s|\$))/is",'<a href=$1>$1</a>', $text); return($text); } Любая ссылка переделывается в гиперссылку. Причём независимо что стоит вначале ссылки: www или http:// Проблема в том, что, если в конце ссылки нет пробела, то и любой текст становится ссылкой до пробела. Вот так: http://www.php.ruздесьлюбойтекстдопробела Как исправить? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
В некоторых случаях, когда точно известен формат вставляемых ссылок, можно и исправить. Например, ссылки только из латинских букв, дальше текст - из любых нелатинских. Или в случае, если ссылка всегда заканчивается числом. Ну может, там как-то JS задействован. Нужно изучить.
Однако вы ошибаетесь. Вот этот код может Код (Text): $text = preg_replace('/(http:\/\/([\w\d\.\?\&\#\;\:\+\-\=\%\/]+))/i', '<a href="$1">$1</a>', $text); Но я не знаю что нужно изменить в коде в первом посте темы, чтобы и там тоже это было реализовано.
В Вконтакте такое только с не латинскими символами прокатывает, иногда даже латинские не берет, например иногда на гугловские запросы обрывает. Как вариант регулярка до домена 1 уровня, а дальше уже доп. проверки на популярные ссылки с GET-параметрами, все остальное все равно резать. Из совсем фантастично-извращенного посимвольно обрезать ссылку и curl'ом проверять ответ с сервера, если не 404, то ссылку возвращать. Только в обоих случаях такой функционал не будет стоить нагрузки на сервер, либо канал при высоком трафике.