Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Вырезка всего между определёнными тэгами
 Сайт -> Форумы » Помогите убрать баннер...
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
Ciber SLasH
Member
Member


Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер

СообщениеДобавлено: Пн, Ноя 07 2005 06:48 Цитировать |  |  | 

Помогите пожалуйста вырезать всё между тэгами:
<!--aimg-->*<!--/aimg-->
если вся эта конструкция находится между:
<!--Signature-->*<!--E-Signature-->


Пытался сделать такой фильтр:

Имя фильтра: Cut IMG from SIG
Пределы:
  • Совпадения с URL: forum.vingrad.ru
  • Разрешить многократное совпадение: checked
  • Границы совпадения: <!--Signature*E-Signature-->
  • Число байт: 512
Поиск и замена:
  • Выражение: <!--aimg*/aimg-->
  • Текст замены: (пустое поле)
испытывал на таком примере:
Цитата:
<!--Signature--><br /><br />--------------------<br />
<div class='signature'><span style='color:navy'>Жизнь — это товар.</span> <span style='color:green'>© PurgeN</span><br /><!--aimg--><a href='http://ciber-slash.hotbox.ru/img/Avatars/sig-3.png' target='_blank'><img src='sig-3000.png' alt='--Resize_Images_Alt_Text--' width='104' height='30' class='attach' /></a><!--Resize_Images_Hint_Text--><!--/aimg--></div><!--E-Signature-->

но "Тест" выдал результат "[No Match]" Shocked

Как победить? Sad
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пн, Ноя 07 2005 10:07 Цитировать |  |  | 

Ciber SLasH

Например, так:
Код:
Bounds = "$NEST(<!--Signature-->,<!--E-Signature-->)"
Limit = 800
Match = "\1"
        "$NEST(<!--aimg-->,<!--/aimg-->)"
        "\2"
Replace = "\1\2"

Multiple matches выключен, если там другими фильтрами ничего не надо вырезать.

Sic: правым кликом в списке фильтров можно их вставлять в буфер и из буфера в виде текста.
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Пн, Ноя 07 2005 11:51 Цитировать |  |  | 

Ciber SLasH ,

Если ты задаешь границы, то в замене должен обработать весь выбранный ими текст, как сделал chAlx.
К началу Профиль Сообщение ICQ
Ciber SLasH
Member
Member


Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер

СообщениеДобавлено: Пн, Ноя 07 2005 15:44 Цитировать |  |  | 

2chAlx:
Спасибо большое !! Smile
Я даже пробовал почти так, только не учёл того, что нужно обрамлять в \1\2 выражение...

2Unknown Mystic:
Спасибо за полезную информацию, будем знать... Smile
К началу Профиль Сообщение
Ciber SLasH
Member
Member


Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер

СообщениеДобавлено: Чт, Ноя 10 2005 04:04 Цитировать |  |  | 

И снова эта же проблема, только теперь не знаю как убрать два подряд идущих тэга <!--aimg-->*<!--/aimg--><!--aimg-->*<!--/aimg--> ? Sad

Один убирается, а другой остаётся...
Код:
        <!--Signature--><br /><br />--------------------<br />
<div class='signature'><!--aimg--><a href='http://www.certifications.ru/public/36rus.gif' target='_blank'><ins by=Alt2title></ins><img src='http://www.certifications.ru/public/36rus.gif' alt='--Resize_Images_Alt_Text--' title='--Resize_Images_Alt_Text--' width='175' height='55'  class='attach' /></a><!--Resize_Images_Hint_Text--><!--/aimg--><!--aimg--><a href='http://www.certifications.ru/public/15rus.gif' target='_blank'><ins by=Alt2title></ins><img src='http://www.certifications.ru/public/15rus.gif' alt='--Resize_Images_Alt_Text--' title='--Resize_Images_Alt_Text--' width='175' height='55'  class='attach' /></a><!--Resize_Images_Hint_Text--><!--/aimg--><br /><a href='http://lock-team.org' target='_blank'>[LocK-TeaM]</a> <a href='http://vipusers.net' target='_blank'>VIPUserS.NeT</a><br /><span style='color:green'>ICQ# </span><span style='color:red'>7</span><span style='color:blue'>555</span>8<span style='color:red'>7</span></div><!--E-Signature-->

Help pleezzz...
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Ноя 10 2005 09:48 Цитировать |  |  | 

Ciber SLasH

Код:
Bounds = "$NEST(<!--Signature-->,<!--E-Signature-->)"
Limit = 1600
Match = "(\# $NEST(<!--aimg-->,<!--/aimg-->))+ \#"
Replace = "\@"


Перенесу-ка я тему на место..
К началу Профиль Сообщение
Ciber SLasH
Member
Member


Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер

СообщениеДобавлено: Чт, Ноя 10 2005 10:59 Цитировать |  |  | 

2chAlx:
Спасибо, выручил Smile .
А можно обяснить как Proxomitron разбирает строку и как применяет выше написанное правило, на простом примере. Допустим строка такая:
Цитата:
<!--Signature-->
111<!--aimg-->222<!--/aimg--><!--aimg-->333<!--/aimg-->444
<!--E-Signature-->

я что-то не могу сообразить как работает это правило: (\# $NEST(<!--aimg-->,<!--/aimg-->))+ \#

В частности не ясно почему модификатор \# вставляется в выражение ($NEST(start,end))+ а не перед ним.
Получается, что на каждом проходе мы запоминаем всё, что находится до $NEST() ?
Ещё непонятно что получается при поиске строки... всё что найдено с помощью $NEST() вырезается, а остальное запоминается в стековую переменную ?

Блин, как-то тяжко с языком выражений Proxomitron'а... Обычные реги читать и составлять вроде умею, а здесь просто начинаешь создавать выражение, а оно потом не работает... в итоге просто вводит в ступор...
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Ноя 10 2005 12:35 Цитировать |  |  | 

Ciber SLasH
Цитата:
Получается, что на каждом проходе мы запоминаем всё, что находится до $NEST() ?

Да, всё после предыдущего $NEST().
Цитата:
всё что найдено с помощью $NEST() вырезается, а остальное запоминается в стековую переменную ?

Именно. А говоришь: "Не понял" ;)

Если владеешь регэкспами -- прикинь, какое выражение пришлось бы составить для твоего случая.
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Чт, Ноя 10 2005 12:51 Цитировать |  |  | 

Цитата:
Получается, что на каждом проходе мы запоминаем всё, что находится до $NEST() ?


Хмм... Если я правильно тебя понял, то хочу сказать что фрагмент кода просматривается один раз, а не один раз на каждое совпадения $NEST()...
Если "раскрыть" + скажем для случая 2-х тегов, то получиться:
\# $NEST(<!--aimg-->,<!--/aimg-->)\# $NEST(<!--aimg-->,<!--/aimg-->) \#
Думаю так понятнее...
К началу Профиль Сообщение ICQ
Ciber SLasH
Member
Member


Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер

СообщениеДобавлено: Сб, Ноя 12 2005 03:07 Цитировать |  |  | 

Спасибо, терь ясно... Smile
К началу Профиль Сообщение
Гудреный
Newbee
Newbee


Зарегистрирован: 11.11.2005
Сообщения: 12

СообщениеДобавлено: Сб, Ноя 12 2005 15:09 Цитировать |  |  | 

помогите еще вырезать все вот из этого
Цитата:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="758" height="208">
<param name="movie" value="images/Whoonline_banner.swf">
<param name="quality" value="high">
<embed src="images/Whoonline_banner.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="758" height="208"></embed></object>


между <object></object>
я уже задавал подобный вопрос но..

_________________
Очень яркое, самое лучшее место - солнечный подоконник.
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Сб, Ноя 12 2005 16:40 Цитировать |  |  | 

А оно тебе надо? Чем тебе не нравится то, как Flash banner blaster [ALX] режет?

Ну если очень хочется - поменяй у этого фильтра границу на
$NEST(<object>,</object>)
В начало Match добавь:
*\s
Ну и замену поменять тоже надо будет. Это уж как тебе больше нравится.
К началу Профиль Сообщение ICQ
AndyAntonov
Newbee
Newbee


Зарегистрирован: 14.01.2010
Сообщения: 7

СообщениеДобавлено: Ср, Янв 20 2010 18:40 Цитировать |  |  | 

Хм, кажется нашёл, в какой теме спросить совет. Задача простая, но как решить — не нашёл. Видать, что-то не так понял в справке.
Задача глобально: удалить всё до открывающего <html>, после закрывающего </html> и между </body> и </html>. Всё равно ничего хорошего туда нигде не пишут, ибо не положено. Зато всякую всплывающую лабуду рекламную — очень даже помещают. Evil or Very Mad
Фильтр вида (это я писал килялку на начало кода)
Код:
Bounds: *<html>
Match: *<html>
Replace: <html>

выдаёт No match. Confused
К началу Профиль Сообщение ICQ
Alex Qwerty
Gold Member
Gold Member


Зарегистрирован: 20.07.2007
Сообщения: 204

СообщениеДобавлено: Ср, Янв 20 2010 19:03 Цитировать |  |  | 

А Byte limit сколько?

Я этим режу мусор до <html>: http://dump.ru/file/4179770
Если в начале BOM UTF-16LE или "<?x" (xml), то ничего не режет.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Ср, Янв 20 2010 19:39 Цитировать |  |  | 

AndyAntonov:

Цитата:
удалить всё до открывающего <html>


Вообще-то там бывает весьма полезный DOCTYPE..

Собственно, идея фильтра очевидна: (</body>)\1*(</html>)\2 заменить на \1\2. Вопросы могут вызывать параметры (Active, тот же Limit) и синтаксис. Ну и Bounds там ни к чему, он для более сложных (двойных) проверок нужен.

Alex Qwerty:

Зачем выкладывать фильтры на обменниках? Особенно такие мизерные.. Есть же ветка с фильтрами, где можно целый топик развести, и сюда тоже легко запостить..
К началу Профиль Сообщение
Alex Qwerty
Gold Member
Gold Member


Зарегистрирован: 20.07.2007
Сообщения: 204

СообщениеДобавлено: Ср, Янв 20 2010 20:32 Цитировать |  |  | 

Там байтики BOM 0xff, 0xfe, 0xef, 0xbb, 0xbf - могут попортиться...

Хотя можно попробовать поизвращаться с [%00] - такое байтик 0x00 отлавливает...
К началу Профиль Сообщение
AndyAntonov
Newbee
Newbee


Зарегистрирован: 14.01.2010
Сообщения: 7

СообщениеДобавлено: Чт, Янв 21 2010 15:32 Цитировать |  |  | 

Alex Qwerty, ByteLimit ставил 8192 (тестовый пример был 5,5 кБ длиной), выдрал с сайта мелкософта.
Хорошо, DOCTYPE оставить (упустил из виду), но там же и до него могут разного насовать, например http ://microsoft.com/rus/protect/default.mspx# (пробел после http удалить, не использующим ИЕ8 страница доставит). Именно с подобной дрянью я хочу бороться.
Т.е. надо из
Код:
*<DOCTYPE ...>*<html>*<body>*</body>*</html>*
оставить только
Код:
<DOCTYPE ...><html>*<body>*</body></html>
. А после этого можно и остальным фильтрам на растерзание отдать.
Т.е. Bounds можно не заполнять?
К началу Профиль Сообщение ICQ
Alex Qwerty
Gold Member
Gold Member


Зарегистрирован: 20.07.2007
Сообщения: 204

СообщениеДобавлено: Чт, Янв 21 2010 17:32 Цитировать |  |  | 

Как-нить так попробуй:

Код:
[Patterns]
Name = "New HTML filter"
Active = FALSE
Multi = TRUE
Limit = 8192
Match = "(*(<!doctype[^>]+>)\1*(<html)\2|*(<html)\2)"
Replace = "\1\2$STOP()"
К началу Профиль Сообщение
AndyAntonov
Newbee
Newbee


Зарегистрирован: 14.01.2010
Сообщения: 7

СообщениеДобавлено: Пт, Янв 22 2010 11:11 Цитировать |  |  | 

На тестовом примере съело всё до открывающего <html>. Скрипт после </html> не удалён. Сначала подумал на Limit = 8192 — его может не хватить для сгребания всего между <html> и </html> (я видал статические страницы по 2,5 МБ!, возможно придётся городить связку из двух фильтров) — но увеличение его до 32768 ситуацию не изменило (тестовый пример 10 кБ и в лимит 32 кБ лезет гарантированно).
P.S. Проверил на стартовой странице майл.ру. Скрипт после </html> не удалён. При загрузке Проксомитрон занял одно «ядро» (CPU iP D930) на две минуты полностью Shocked , «улов» был богатым.
P.P.S. Замена на
Код:
Match = "(*(<!doctype[^>]+>)\1*(<html)\2|*(</html)\2)"
привела к удалению всего между <html> и </html> на тестовом примере, а скрипты остались. На майл.ру ничего не удалило (Лимит?).
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пт, Янв 22 2010 18:41 Цитировать |  |  | 

Alex Qwerty привёл пример фильтра только для чистки перед <html*>. Его можно дополнить чисткой между <html> и <body>, но не всё же подряд там вырезать.

Для чистки после </body> отдельный фильтр удобнее: буфер большой не нужен (можно вообще рубить лишнее по /k) и первую часть можно спокойно по $STOP() завершить (раз она в отдельном фильтре).
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3