Здравствуйте, у меня возник такой вопрос.
Необходимо написать регулярное выражение, которое бы воздействовало на каждый html тег.
среда — php
использую функцию
preg_replace
, вот собственно само регулярное выражение.
/>([^<]*)<([\/a-z0-9]+)([^>]*)>([^<]*)</ie
но есть загвоздка, оно распространяется на все нечетные теги, тобишь работает тег через тег. как можно это поправить ?
вариант без использования > < по краям регулярки не устраивает, потому как в тексте встечабтся надписи типа <<preg>> и это естественно не теги.
Здравствуйте, <Аноним>, Вы писали:
А>вариант без использования > < по краям регулярки не устраивает, потому как в тексте встечабтся надписи типа <<preg>> и это естественно не теги.
Это не совсем валидный html. Шаблон, наверное? Так может быть, использовать другие символы в роли разметки — ну например, [[ ]].
Другой подход состоит в том, чтобы сперва закодировать << >> (превратить в те же [[ ]]), потом выполнить собственно обработку, и наконец, раскодировать.
Кстати, как трактуется текст <<<hello world/>>> ? [[<hello world/>]], <[[hello world/]]>, или вообще [[<hello world/]]> ? Это ещё один довод за то, чтобы изменить язык разметки шаблона.
... << RSDN@Home 1.2.0 alpha rev. 655>>