Autor | Zpráva | ||
---|---|---|---|
na1k Profil |
#1 · Zasláno: 19. 6. 2008, 12:16:26
Potřeboval bych pomoct s reg. výrazem (ve formátu pro php funkci ereg), cíl je takový:
{?chyba}<div>Chyba: bla bla bla</div>{?/chyba} bla bla bla <table> {?chyba}<tr><td>...</td></tr>{?/chyba} <tr><td>bla</td></tr> </table> Z tohoto kódu se snažím pomocí výrazu dostat obsah mezi bloky {?chyba} a {?/chyba}. Problém je v tom, že potřebuji první blok a potom hned ten nejbližší ukončovací. Stvořil jsem tento výraz: {\?chyba}(.*){\?/chyba} Problém ale je, že výraz vrací obsah mezi prvním a úplně posledním blokem, což je špatně. Vím, že chyba je v (.*), ale nenapadá mě, čím nahradit tečku tak, aby vylučovala ukončovací blok {?/chyba} a zárověň umožňovala další otevírací {?chyba} :-( Předem děkuji dobré duši, která mi poradí. Zřejmě to není nic složitého, ale já jsem, co se výrazů týče, spíše začátečník, a přestože jsem si procházel syntaxi, nenapadlo mě žádné řešení :-( |
||
nightfish Profil |
#2 · Zasláno: 19. 6. 2008, 12:40:18
v PCRE by to bylo
preg_match("/{\?chyba}(.*){\?\/chyba}/U", $retezec, $matches) případně, pokud bys jich chtěl víc (všechny), tak preg_match_all |
||
Časová prodleva: 16 let
|
0