автозамена | регулярные выражения

IliaK

Новичок
автозамена | регулярные выражения

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

помогите, пожалуйста.
 

IliaK

Новичок
Ping
не разобрался... это Perl? а как это же на php записать?
 

SiMM

Новичок
> это Perl?
Это регулярное выражение. Если из него выбросить излишества.
> а как это же на php записать?
Точно так же. С той лишь разницей, что $match.1 в замене пишется иначе.
PS: до кучи - http://phpfaq.ru/regexp
 

IliaK

Новичок
Kostya, SiMM
два последних примера осуществляют необходимую замену, однако работают некорректно, если включить в текст сообщения конструкцию вида
<a href="http://phpclub.ru">сайт веб-разработчиков</a>

пока получилось только:
PHP:
$result=preg_replace("#[\s](https?|ftp)://\S+[^\s.,>)\];'\"!?]#",'<a href="\\0">\\0</a>',$text);
(изменённое первое выражение - ставит ссылки где нужно и игнорирует <a href=http://phpclub.ru>такие</a>. с кавычками после знака равенства и перед закрывающей угловой скобкой ещё надо разобраться)
 

TheBattle

Новичок
Я когда был молодым и неопытным воротил такое:
PHP:
$text = preg_replace("/(\s*)(http:\/\/)([^\s'\"<]*?[a-zA-Z0-9\-_\.\?\/\%%]*?)(\s)/i", 
			'\\1<a href=\'\\2\\3\' target="_blank" class=bl>\\2\\3</a>\\4', $text);
 
Сверху