regexp как многократно повторить регулярное выражение
От: Аноним  
Дата: 08.11.06 08:29
Оценка:
Здравствуйте, у меня возник такой вопрос.

Необходимо написать регулярное выражение, которое бы воздействовало на каждый html тег.

среда — php

использую функцию
preg_replace

, вот собственно само регулярное выражение.

/>([^<]*)<([\/a-z0-9]+)([^>]*)>([^<]*)</ie


но есть загвоздка, оно распространяется на все нечетные теги, тобишь работает тег через тег. как можно это поправить ?
вариант без использования > < по краям регулярки не устраивает, потому как в тексте встечабтся надписи типа <<preg>> и это естественно не теги.
Re: regexp как многократно повторить регулярное выражение
От: Кодт Россия  
Дата: 08.11.06 09:16
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>вариант без использования > < по краям регулярки не устраивает, потому как в тексте встечабтся надписи типа <<preg>> и это естественно не теги.


Это не совсем валидный html. Шаблон, наверное? Так может быть, использовать другие символы в роли разметки — ну например, [[ ]].

Другой подход состоит в том, чтобы сперва закодировать << >> (превратить в те же [[ ]]), потом выполнить собственно обработку, и наконец, раскодировать.

Кстати, как трактуется текст <<<hello world/>>> ? [[<hello world/>]], <[[hello world/]]>, или вообще [[<hello world/]]> ? Это ещё один довод за то, чтобы изменить язык разметки шаблона.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: regexp как многократно повторить регулярное выражение
От: Аноним  
Дата: 08.11.06 10:04
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Так может быть, использовать другие символы в роли разметки — ну например, [[ ]].


да, это конечно верно, проблема в том, что количество таких исключений не поддаётся подсчёту, я просмотрел где-то в районе 1% всех документов которые надо переработать. и это максимум, больше такой ерундой заниматься нехочу.

была конечно другая потрясная идея, применять функцию, и теги к которым я её применил менять на [] ? но тогда придётся менять регулярку на более сложную а она и сейчас не очень быстро справляется. как бы не угробить сервер...


может быть есть всё-таки какой-нибудь хитрый способ отойти с троке на n шаго назад после нахождения совпедения и применения к нему действия?

спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.