Подсветка в HTML'овском документе вне тагов

Роберт

Аналитик
Подсветка в HTML'овском документе вне тагов

Нету ли для preg_replace() какого-нибудь наворота , чтобы он искал информацию обходя/игнорируя информацию в тегах? Я почему-то предпологал что будет какой-нибудь модификатор , типа /H для регулярных выражений. Возможно я очень многого хочу , но ведь РНР всё таки для Web'a , a значит в нём часто придодится обрабатывать HTML'овские документы...
Вот и в моём случае - хочу подсетить для клиента текст в HTML'овском документе... И то и дело мой preg_replace() умудряется модифицировать текст внутри тагов , портя линки и коверкая таблицы.
Можно конечно создать специальный preg_replace() который бы вначале находил фрагменты текста вне тагов и найдя их вызывал мою функцию , а внутри неё уже производилась бы подсветка. Но может я изобретаю велосипед и это уже давно где-то реализовано?
 

Gremboloid

инженера Гр...
Всю жизнь регулярка работала только с текстом. К html имеет отношение только по тому, что это тоже по сути текст. Если происходят такие казусы, IMHO надо пересмотреть алгоритм.
 

Роберт

Аналитик
Gremboloid
Ну почему , ведь модификатор /е есть , продумали же...
Может когда-нибудь и /h введут для видимой части HTML'а...
 

alexhemp

Новичок
Роберт

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

1. Выкусываем регуляркой все теги в массив, заменив их входжения спец-символом, не встречающимся в тексте например 0x01

2. Подсвечиваем

3. Заменяем спец. символы на сохраненные ранее в массив теги.

Задача решена.
 

Роберт

Аналитик
alexhemp
Я долго искал и перед тем как задать вопрос , и сейчас искал , но не нашёл такой... А идея здоровская! Только видишь - тогда надо придумать универсальное регулярное выражение для вырезки тегов... Я так подумал - в 98% подойдёт /<[^<]*?>/s ,
но если в тексте встретится что-то типа "<!--- Коля < Пети --->" или даже тотже <textarea> в которым нельзя сделать подсветку?
По любому надо было что-то сделать со стороны разработчиков РНР , ведь с этой задачей сталкивается практически каждый из нас...
 
Сверху