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

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


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

СообщениеДобавлено: Пт, Июл 10 2015 15:44 Цитировать |  |  | 

столкнулся со следующей проблемой. Например, есть
Код:
<img src="00000" ...


один фильтр(вкл многократность) заменяет 0000 на 1111 и получаем:
Код:
<img src="11111" ...


Но следующий фильтр не может заменить src="11111 на 2222.
В редакторе, в Тесте, все нормально, а вот на странице не хочет.
Даже такое выражение не работает
Код:
src=*"11111"


Почему, в чем проблема?

Image
К началу Профиль Сообщение
Alex Qwerty
Gold Member
Gold Member


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

СообщениеДобавлено: Пт, Июл 10 2015 19:09 Цитировать |  |  | 

Галка "Allow for multiple matches"
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Июл 10 2015 21:40 Цитировать |  |  | 

Alex Qwerty писал(а):
Галка "Allow for multiple matches"

да я же писал что включена многократность

Например значки ранга у Alex Qwerty должны измениться, но второй фильтр не срабатывает
Код:

[Patterns]
Name = "n1"
Version = ""
Author = ""
Comment = ""
Active = TRUE
Multi = TRUE
URL = ""
Bounds = ""
Limit = 256
Match = ""images/ranks/rank5.gif""
Replace = ""1""

[Patterns]
Name = "n2"
Version = ""
Author = ""
Comment = ""
Active = TRUE
Multi = FALSE
URL = ""
Bounds = ""
Limit = 256
Match = "<img src="1""
Replace = "<img src="images/ranks/rank2.gif""

К началу Профиль Сообщение
Alex Qwerty
Gold Member
Gold Member


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

СообщениеДобавлено: Вс, Июл 12 2015 06:08 Цитировать |  |  | 

Код:
[Patterns]
Name = "n1"
Active = TRUE
Multi = TRUE
Limit = 256
Match = "<img src="images/ranks/rank5.gif""
Replace = "<img src="1""
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пн, Июл 13 2015 03:42 Цитировать |  |  | 

Alex Qwerty писал(а):
[code]...

нет-нет, это поиск внутри отредактированного кода, а нужно в часть из нетронутого "залезть". Т.е. неизвестно img есть или нету

Смысл в следующем, найти и заменить все ссылки на какой-то шаблон
а затем, отфильтровав по этому шаблону, попробовать сделать элемент невидимым.
иначе, нужно дважды пробегать по Листу

Видимо, так сделать нельзя (
К началу Профиль Сообщение
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Пн, Июл 13 2015 19:15 Цитировать |  |  | 

SergS:

Где-то было же в документации расписано, как окно фильтрации работает. Если уж фильтрация прошла мимо <img src>, то назад к (куда, к <!DOCTIPE>?) оно уже не вернётся. Multi = TRUE ставит "курсор" для последующей фильтрации не в конец искомой строки (найденной шаблоном Match), а в начало. И то со сдвигом в один символ, чтобы избежать зацикливания в простых случаях.

Чтобы пройтись повторно по уже обработанному тегу, надо во втором фильтре искать с того места, на котором остановилась фильтрация после первого:

Код:
Multi = TRUE
Match = "(<img src=)\1$AV(images/ranks/rank2.gif)"
Replace = "<пробел>\1_replaced_"

Multi = FALSE
Match = "(<img src=)\1$AV(_replaced_)"
Replace = "\1"images/ranks/rank10.gif""


Добавляем <пробел> (или что угодно), чтобы после замены поиск вёлся начиная с пробел><img..., а не с обрезанной оригинальной строки img (которая, очевидно, не попадётся в шаблон <img).
ПС: Для этого обычно уместно использовать Bounds.
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




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


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