Сложная регулярка.

HraKK

Мудак
Команда форума
Сложная регулярка.

Возможно ли сделать, и если возможно приведите пример пожалуйста.
Задача найти /\|% .+ %\|/ везде (preg_match_all), исключая /\|% .+ %\|/ которые находятся в
<textarea ............ > X </textarea>.
 

HraKK

Мудак
Команда форума
м, как понять удали тег?
мне надо что б
|% 1 %| abrakadabra <textarea rows=2>|% 2 %|</textarea>

что б 1 нашло, 2 нет
 

WP

^_^
Еп, ну preg_match_all('~\|%\s.*?%\|~',preg_replace('~<textarea.*?>.*?</textarea>~i','',$string),$matches);
 

HraKK

Мудак
Команда форума
Да не, мне нельзя так=\
На самом деле там preg_replace_callback
и поэтому ничего вырезать нельзя. Разве что сложнее что то мутить типа вырезать заменя на псевдо что-то. и потом повторно проходить и заменять.
 

WP

^_^
А ты замени тег на последовательность, её сохрани с тегом, потом замени регуляркой '~|%\s.*?%\|~', а потом обратно из массивом.
 

HraKK

Мудак
Команда форума
Ну это опять таки изврат.
Хотелось бы элеганнее что то типа как в смарти исключения что парсить а что оставлять ас ис
 

HraKK

Мудак
Команда форума
Продолжаю, истерический хохот.

Эта мысль пришла мне дома, а дома смарти(и пхп) не держу и качать не собираюсь.

Но, у меня оооочень большие сомнения что у них не сделано извратом.(сужу по той части, что успел разобрать)
 
Сверху