Помощь с регулярным выражением

BD
На сайте с 11.06.2008
Offline
35
505

Пишу кое-что на Perl, и никак не удаётся сделать вот что: нужно напарсить из кода страницы раздельно все внешние и внутренние линки..

мб поможет кто

Аудит безопасности сайтов (http://ahack.ru)
[Удален]
#1

В данном случае можно и без регулярок обойтись (если их не знаешь). Достаточно строковыми функциями обойтись. Перл не знаю, конкретно не подскажу, но логика такая.

1. ищется вхождение строки своего домена. Полное слово (от пробела до пробела) - локальный урл.

2. ищется все вхождения hттp://

2.1 из результата выкидываются вхождения локального домена.

Один момент - нужно учесть с ввв и без оного.

A
На сайте с 16.11.2008
Offline
12
#2

SeoNizator, забыли об относительных ссылках - их тоже к внутренним относить нужно :)

Поэтому нужно искать все "<a href". А уже среди них искать

0. Убирать все href="javascript:

1. Вхождения своего домена - локальная ссылка

2. Отсутствие своего домена и наличие домена (parse_url) - внешняя ссылка

3. Отсутствие домена - локальная ссылка

Пишу на похапэ (/ru/forum/342374). Аудит скриптов. За деньги. Качественно.
CR
На сайте с 21.11.2008
Offline
46
#3

юзай аналог из пхп preg_replace_callback

А регулярки там вроде тоже посикс - /\<a href=\"(http:\/\/)?(www)?([a-zA-Z0-9-]{1,15})\.([a-z]{2,4})\/(.*?)\"/ и разбирай потом карманы

Web-developer. PM me or icq:239836
[Удален]
#4
asserte:
SeoNizator, забыли об относительных ссылках - их тоже к внутренним относить нужно :)
Поэтому нужно искать все "<a href". А уже среди них искать
0. Убирать все href="javascript:
1. Вхождения своего домена - локальная ссылка
2. Отсутствие своего домена и наличие домена (parse_url) - внешняя ссылка
3. Отсутствие домена - локальная ссылка

Ну не то что бы забыл... Есть у меня такая привычка (плохая наверное ;) ) - не договаривать чуток, чтобы дать возможность человеку самому подумать. А когда он найдёт, то что я не договорил - он будет повод гордиться собой ;).

А вот про яваскрип, да, дейсвительно забыл.

BD
На сайте с 11.06.2008
Offline
35
#5

Всем спасибо за советы, как будет время - попробую.

Chikey.ru:
юзай аналог из пхп preg_replace_callback
А регулярки там вроде тоже посикс - /\<a href=\"(http:\/\/)?(www)?([a-zA-Z0-9-]{1,15})\.([a-z]{2,4})\/(.*?)\"/ и разбирай потом карманы

Такая регулярка не пойдет уже хотя бы потому что, href не всегда идет сразу после a, может быть так, например: <a target="_blank" href="...">, да и кавычки не всегда ставятся...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий