Автор |
Сообщение |
SergS
Member

Зарегистрирован: 02.02.2011
Сообщения: 58
|
столкнулся со следующей проблемой. Например, есть
Код: |
<img src="00000" ... |
один фильтр(вкл многократность) заменяет 0000 на 1111 и получаем:
Код: |
<img src="11111" ... |
Но следующий фильтр не может заменить src="11111 на 2222.
В редакторе, в Тесте, все нормально, а вот на странице не хочет.
Даже такое выражение не работает
Почему, в чем проблема?
|
|
|
К началу |
Профиль Сообщение |
 |
Alex Qwerty
Gold Member

Зарегистрирован: 20.07.2007
Сообщения: 206
|
Галка "Allow for multiple matches"
|
|
|
К началу |
Профиль Сообщение |
 |
SergS
Member

Зарегистрирован: 02.02.2011
Сообщения: 58
|
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

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

Зарегистрирован: 02.02.2011
Сообщения: 58
|
Alex Qwerty писал(а): |
[code]... |
нет-нет, это поиск внутри отредактированного кода, а нужно в часть из нетронутого "залезть". Т.е. неизвестно img есть или нету
Смысл в следующем, найти и заменить все ссылки на какой-то шаблон
а затем, отфильтровав по этому шаблону, попробовать сделать элемент невидимым.
иначе, нужно дважды пробегать по Листу
Видимо, так сделать нельзя (
|
|
|
К началу |
Профиль Сообщение |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2633
Откуда: SPb
|
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
| |