Autor | Zpráva | ||
---|---|---|---|
uganda Profil * |
#1 · Zasláno: 8. 7. 2013, 12:27:23
Jak z $xx = {XX neco} neco2 {/XX}, {XX aaaa} bbb {/XX}
dokazu vytahnout neco, neco2 a aaaa, bbb? zkousel jsem preg_match_all("~{XX(.*)}(.*){/XX}~",$xx,$data); nevim jestli takhle to muzu udelat nicmene pak nevim jak dal to "vypsat" |
||
Tori Profil |
To není špatné, jen je asi potřeba escapovat ty složené závorky, a změnit to tak, aby
.* nebylo "hladové". Taky bych použila flag PREG_SET_ORDER , pole s výsledky bude výhodněji seřazené na procházení pomocí foreach:
preg_match_all('~\{XX(.*)\}(.*)\{/XX\}~sU', $xx, $data, PREG_SET_ORDER); foreach ($data as $i => $set) { echo "<br>č.$i : text ve slož. závorkách = ".$set[1].', text mezi závorkami = '.$set[2]; } |
||
uganda Profil * |
#3 · Zasláno: 8. 7. 2013, 13:54:13
jaj jasny jsem zapomnel pridat to U jinak to funguje, ale nevim jeste jednu vec
kdyz bych mel {XX neco} neco {XXX} neco2 {/XX} ~\{XX(.*)\}(.*)\{XXX}(.*){/XX\}~sU ale potreboval bych aby to {XXX}obsah - bralo jen kdyz ho bude obsahovat jinak at to ignoruje :)
|
||
DJ Miky Profil |
Část výrazu můžeš uzavřít do kulatých závorek (podvýraz) a za něj dát otazník – ten značí nepovinnou část:
~\{XX(.*)\}(.*)(\{XXX\}(.*))?\{/XX\}~sU ?: na začátek závorky, aby se nepromítla do pole výskytů $data :
~\{XX(.*)\}(.*)(?:\{XXX\}(.*))?\{/XX\}~sU (Ještě bylo potřeba přidat zpětná lomítka před složené závorky.) |
||
revolta Profil * |
#5 · Zasláno: 9. 7. 2013, 13:42:46
diky to funguje, jen jeste jedna vec jak by slo udelat to ze by to bylo:
{XX neco} neco {XX2 neco2} neco2 {XX3} neco3 {/XX} XX3 - z minulyho prikladu muze ale nemusi byt XX2 - {XX2 neco2} neco2 - nemusi byt, ale muze se i opakovat zkousel jsem si to upravit podle regularu vys, ale nedokazu udelat "opakovani" toho XX2 vypisu bud jenom prvni nebo posledni ale ja potrebuji vsechny Diky za pomoc :) |
||
Časová prodleva: 11 let
|
0