parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

я обычно делаю примерно так:

Misha v.3 04.08.2003 08:46 / 04.08.2003 12:22

1. одним матчем вырезают теги с аттрибутами по шаблону, причем вырезают их так, чтобы вырезанные теги оказались в отдельной таблице, а в исходном месте остался какой-нить идентификатор, позволяющий произвести обратную замену.
2. делают пачку матчей, производящих необходимые замены в тексте (не тегах, т.к. тгов у нас уже нету тут)
3. делают обратную замену, вставляя теги на место.

маленький пример (не для всех тэгов, а для js)
$str[тут то, что обрабатываем]

# шаблон для выкусывания js
$jspattern[<script.+?</script>]

# ищем все вхождения и запоминаем их в таблице $js
$js[^str.match[($jspattern)][gi]]

^if($js){
#	если что-то было найдено, то матчим еще раз и заменяем каждое вхождение
#	на строку {js} (должно быть по возможности уникальным.
#	если в исходном тексте встретится такая последовательность, то будет плохо :)
	$str[^str.match[($jspattern)][gi]{{js}}]
}

#	<<< тут вставляем пачку матчей в которых делаем с нашей $str что душе угодно

# возвращаем на место javascript-ы
^if($js){
	$str[^str.match[{js}][g]{$js.1^js.offset(1)}]
}