Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Perl] поправочка 14.12.04 11:58 Число просмотров: 2878
Автор: LLL <Алексей> Статус: Member
|
>$text=~m#.*(http(:|%3A)(/2F){2}([\w\-]+\.)+[A-Za-z]{2,4})#i;
> > В результате выполнения такой строки в переменную $1 > заносится последняя встреченная в переменной $text > подстрока вида http://domain.name.xxx (причём это может > быть и ya.ru, и hello.win.go.home - всё учтено). > Возможность встречи %3A и %2F так же рассмотрена.
В предложенном варианте не учитывается возможность шестнадцатиричного представления символов имени хоста, поэтому более универсальный вариант может выглядеть так:
$text =~ s/%([\da-f]{2})/pack("c",hex($1))/gie;
$text =~ m#.*(rel="nofollow">http://[^/]+)($)#i;
---
Тут мы еще не заморачиваемся со структурой имени хоста, а берем просто все до /
> И вторая ошибка в моём же коде: было [\w\.]+, что значит > алфавитно-цифровой символ и сразу следом за ним точка. > Просто описАлся. Надо: [\w+\.]+
Вот в частности про эти одиночные буквы с точками я и говорил, что "лажа какая-то".
А еще я плохо прочитал задание, предположив, что нужен целиком последний URL, поэтому за вторую часть своей необоснованной критики приношу извинения :-)
|
|
|