Показать сообщение отдельно
Старый 15.12.2004, 23:54     # 7
nemur
Junior Member
 
Регистрация: 25.03.2004
Адрес: Питер
Сообщения: 112

nemur Молодецnemur Молодецnemur Молодец
Сделал вот так:

$pattern = qr/\-\w\~\\\/\:\@\#\$\%\[\]\?\!\=\&\./;
$message =~ s/((?:http:\/\/|www\.)[$pattern]+?)([\.\,\!\?]*[^$pattern]|\Z)/<a href=\"$1\">$1<\/a>$2/g;

предполагалось, что ссылка должна прерваться любым символом, не входящим в $pattern или концом строки, причем если перед ним стоит N точек, запятых, ! и ?, то они не включаются в ссылку.

однако, у конструкции (http://some.domain.com/test). в ссылку включается также закрывающая скобка ')' Других ошибок пока не было замечено. Что неправильно, объясните?

Добавлено:
теперь исправил на
/((?:(?:https?|ftp):\/\/|www\.)[$pattern]+?)([\.\,\!\?\)]*(?:[^$pattern]|\Z))/
Со скобкой больше проблем нет, но зачем ее необходимо включать???
И еще, посоветуйте, кто знает хорошую книжку по регекспам

Последний раз редактировалось nemur; 16.12.2004 в 01:40.
nemur вне форума