Страница 1 из 1

pcre шаблоны

Добавлено: Вт окт 18, 2005 22:43
null
Хотел составить правило блокирующее все url типа :
"любая фигня" + ("." или "/") + (ads или adv) + ("." или "/") + "любая фигня"
Наваял :
.+(\/|/.)ads|adv(\/|/.).+
Но както видимо нетак ...
C этим правилом блокируются url , типа :
http://forum.lipetsk-racing.ru//index.p ... &t=2352&s=

Пытался надёргать правил из виндового "proxomitron" .
Но там както подругому всё ...

Ну так вот , может стоит создать раздел в FAQ по "pcre" с наиболее распространёнными правилами , ато функция сильная а описания мало .

Или может в эту тему давайте писать .

Вот первый шаблон :

love - Ловит все url в адресе которых присутствует это слово . Например :
love.mail.ru
maturelovers.com
:)

Автор , SLAVA , ну помогитеж нам , юзерам вашего замечательного редиректора !
Пролейте свет на эту функцию .

Добавлено: Ср окт 19, 2005 8:16
Slava
Это не так просто.
Почти, как изучение языка программирования.
Думаю, что лучше всего читать мануалы и изучать паттерны по описаниям и примерам.
И по этому вопросу написано много страниц.
Англоязычную документацию легко найти, например man pcrepattern, с русской сложнее. Могу порекомендовать "Perl" O'REILLY Т.Кристиансен, Н.Торкигтон.
Например http://www.linuxshare.ru/docs/devel/lan ... n/ogl6.htm

Добавлено: Пн окт 31, 2005 15:41
Goblin Shi'k L'Grubbr
Ну не любит Слава "пцре"...

И, в то же время, совершенно прав: хочешь разобраться -- изучай!

Почему блокируется "forum.lipetsk-racing.ru/index.php?act=ST&f=2&t=2352&s=" пояснить не могу. Х.Е.М.З...
IMHO данный адрес НЕ ДОЛЖЕН блокироваться этим правилом! :D

Кстати, если "(\/|/.)" должно соответствовать "/" или "/.", то записать нужно так "(\/|\/\.)". Т.е. "точка_литерал", а не "точка_символ_маски".

И часть "ads|adv" означает "adsdv" или adadv", т.е. выбор не из "ads" и "adv", а из "s" и "a"... кажется...

А для затравки, чтоб изучалось лучше, приведу пример как у меня блокируются баннеры (одно из правил):

(ad|ads|adv|bn|pan)(|\..*)\/ad(frame|js|image|log|show|view)\.php(\?|$)

разбор строки по блокам "(...)":

1. ищем ad или ads или adv или bn или pan, поэтому перечень берем в скобки.

2. далее сразу "/ad", или сначала "любая фигня" после точки. :)

3. после "/ad" опять перечень: frame или js или image или log или show или view, а значит он должен быть в скобках.

4. URL должен заканчиваться на ".php?<параметры запроса>" или ".php".

На счет "js" в п. 3, я, скорее всего, погорячился, но остальное работает нормально в 99% случаев.