| imho.ws |
![]() |
|
|
|
# 3 |
|
Junior Member
Регистрация: 25.03.2004
Адрес: Питер
Сообщения: 112
![]() ![]() ![]() |
Этот regexp, если я правильно понял, не распознает ссылку в конце предложения (точку к ней приделает) и ссылки на скрипты вроде http://imho.ws/showthread.php?p=720420#post720420. Как подправить?
![]() Хм. Кстати, неплохая идея взять исходники этого vBulletin, кажется, он правильно это делает Кто-нибудь может глянуть?
Последний раз редактировалось nemur; 15.12.2004 в 01:15. |
|
|
|
|
# 4 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Ведь если точка действительно в адресе и написана в нем, то будет ошибкой ее отрезать. Ну а если это нужно все-таки, то помоему проще/быстрее ее отрезать средствами PHP (ну или любого другого языка)
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 15.12.2004 в 01:47. |
|
|
|
|
|
# 5 | |
|
Junior Member
Регистрация: 25.03.2004
Адрес: Питер
Сообщения: 112
![]() ![]() ![]() |
Цитата:
|
|
|
|
|
|
# 6 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Вобщем, чего спорить-то, если Вам нужно сами решайте, отрезать точку по Вашему принципу не сложно ведь, например так: /((?:\w+\:\/\/|www\.)[\w\-\:\@\#\%\/\[\]\?\=\&\.]+?)(?:\.\s|\s)/ Ну или краткая форма (помоему в ссылке почти все может быть при желании): /((?:\w+\:\/\/|www\.)[^\s]+?)(?:\.\s|\s)/
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 25.03.2004
Адрес: Питер
Сообщения: 112
![]() ![]() ![]() |
Сделал вот так:
$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. |
|
|
|
|
# 9 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
http://www.softtime.ru/dic/id_dic=134&id_group= А тут вообще-то для PHP, но очень грамотно описаны какраз отличия от PERL, поэтому можено читать и для того и для другого языка. Рекомендую.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|