Помогите сделать регулярку

12
W
На сайте с 10.05.2009
Offline
114
802

Помогите сделать регулярку.

Нужна регулярка что бы вырезала из шаблона определенный кусок, вот пример текста -

{if}Кадры из фильма {title}
{scrn}
{/if}

{if}Трейлер к фильму {title}
{triler}
{/if}

Если нету скринов то чтобы из шаблона нужно вырзать это -

{if}Кадры из фильма {title}
{scrn}
{/if}

и на на оборот если нету трейлера то это -

{if}Трейлер к фильму {title}
{triler}
{/if}

выполняю такими командами -

if ($triler == "") $full_shab = preg_replace ('#{if}[^{]+?{triler}.+?{/if}#is', "", $full_shab);

if ($scrn == "") $full_shab = preg_replace ('#{if}[^{]+?{scrn}.+?{/if}#is', "", $full_shab);

но вот заковыка открывающаяся скобка { встречается еще и в теге {title}, а если вместо [^{] в регулярке поставить знак . то когда нету трейлера то он вырезает со скринами. Подскажите регулярку плиз, может я ее вобще криво написал, буду рад любой помоще.

[Удален]
#1

wolfston, в ДЛЕ шаблнизатор влюблены? забудьте про это сраное гавно, откройте для себя smarty.net

[Удален]
#2
bearman:
забудьте про это сраное гавно, откройте для себя smarty.net

Еще бы и про это забыть неплохо. Кастрация языка ни к чему хорошему не приводит.

sashka_
На сайте с 27.01.2010
Offline
103
#3
wolfston

делай так

if (strpos($ss,"{triler}")) { бла бла бла }

if (strpos($ss,"{scrn}")){ бла бла бла } 
Знаю PHP, JS, jQuery. Помощь для вашего сайта. (/ru/forum/840509).
W
На сайте с 10.05.2009
Offline
114
#4
wolfston, в ДЛЕ шаблнизатор влюблены? забудьте про это сраное гавно, откройте для себя smarty.net

Где вы увидели слово ДЛЕ? Нможете скать по делу, проходите мимо

wolfston добавил 13.04.2010 в 15:31

sashka_:
делай так
if (strpos($ss,"{triler}")) { бла бла бла }

if (strpos($ss,"{scrn}")){ бла бла бла } 

Вы вопрос читали то?

sashka_
На сайте с 27.01.2010
Offline
103
#5

тогда так :)

preg_replace ('#{if}.+?{triler}.+?{/if}#is', "", $full_shab);
W
На сайте с 10.05.2009
Offline
114
#6
sashka_:
тогда так :)
preg_replace ('#{if}.+?{triler}.+?{/if}#is', "", $full_shab);

так не получается, при остутсвии трейлера он вырезает все со скринами, тоесть в это условие - {if}.+?{triler} подходит вот такой кусок -

{if}Кадры из фильма {title}
{scrn}
{/if}

{if}Трейлер к фильму {title}
{triler}
sashka_
На сайте с 27.01.2010
Offline
103
#7

тогда убери букву s с регулярки и убери вопросы , чтобы коретка на новую строку не переводилась

preg_replace ('#{if}.+{triler}.+{/if}#i', "", $ss); 

W
На сайте с 10.05.2009
Offline
114
#8
sashka_:
тогда убери букву s с регулярки и убери вопросы , чтобы коретка на новую строку не переводилась

дело в том что переводы строки присутствуют или могут присутствовать в шаблонах, я здесь упрощенную версию привел чтобы не захламлять, вобщем тоже не вариант. Есть еще предложения?

alexandr_nv
На сайте с 23.04.2009
Offline
39
#9

wolfston


$full_shab = preg_replace("#{if}(?!.*{scrn}.*).*{triler}.*{/if}#isU", "", $full_shab);
[Удален]
#10
alexandr_nv:
preg_replace("#{if}(?!.*{scrn}.*).*{triler}.*{/if}#isU"

спецсимволы экранировать мама будет? :)

bearman добавил 13.04.2010 в 17:55

wolfston:
Где вы увидели слово ДЛЕ? Нможете скать по делу, проходите мимо

у вас это "шаблонизатор" из серии дле, вот где дле. используйте нормальные шаблонизаторы а не гавно

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий