login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[opgelost]Preg_match

Offline Fenrir - 18/02/2005 22:45 (laatste wijziging 19/02/2005 10:05)
Avatar van FenrirPHP expert ik wil graag deze string matchen, het vetgedrukte wil ik eruithalen:


$str = '[START RECURSE : Tree]
<ul>

[RECURSE : START_ITEM]<li>{content}[RECURSE : DEEPER_LEVEL]</li>[RECURSE : END_ITEM]
</ul>
[END RECURSE : Tree]';

dus dan zou ik dit rijtje gegevens krijgen:

1. "Tree" (moet aan dit voldoen: "([A-Za-z0-9_\-]+)")
2. "<ul>" (mag alles zijn)
3. "<li>{content}" (mag alles zijn)
4. "</li>" (mag alles zijn)
5. "</ul>" (mag alles zijn)

Hoe zou dit met een reguliere expressie kunnen?

mvd,
Fenrir

5 antwoorden

Gesponsorde links
Offline Stijn1 - 30/11/1999 00:00
Avatar van Stijn1 Gouden medaille

PHP ver gevorderde
[code]phprnpreg_match('#[START RECURSE ([a-z0-$_-]+)]rn(.)rn[RECURSE START_ITEM](.)[RECURSE DEEPER_LEVEL](.)[RECURSE END_ITEM]rn(.)rn[END RECURSE Tree]#i', $var, $matches);rnprint_r($matches);rn[code] rnrnWeet niet of je zoiets bedoelt en of het werkt maar je kan altijd proberen
Offline Fenrir - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
Avatar van Fenrir PHP expert Thanks dat werkt!rnrnik heb wel ([a-z0-$_-]+) vervangen door ([A-Za-z0-9_-]+), omdat ik anders een error kreeg.rnrnMaar nu is er nog 1 probleem als ik er enters tussen zet, werkt het niet meer...rnrndus bijrn$str = '[START RECURSE Tree]rnurnrnhier een [enter]rnrnlrn[RECURSE START_ITEM]li{content}[RECURSE DEEPER_LEVEL]li[RECURSE END_ITEM]rnulrn[END RECURSE Tree]';rnrnwerkt het niet meer...weet iemand wat ik moet aanpassenrnrnEDITrnrnHet werkt nu ) ik heb ditrnrnpreg_match('#[START RECURSE ([A-Za-z0-9_-]+)]rn((s).)rn[RECURSE START_ITEM]((s).)[RECURSE DEEPER_LEVEL]((s).)[RECURSE END_ITEM]rn((s).)rn[END RECURSE ([A-Za-z0-9_-]+)]#i', $str, $matches);
Offline Thomas - 30/11/1999 00:00
Avatar van Thomas Moderator Euh, je kan s (een pattern modifier) ook gewoon achter je regexp aanplakken - waar die i staat.rnrnTrouwens A-Za-z is niet nodig als je case-insensitive matched (waar die i voor bedoeld is).rnrnDe range 0-$ is redelijk leeg, dat verklaart je foutmelding waarschijnlijk.rnrnVervang A-Za-z0-9_- eens door a-z0-9_- en dan zou het moeten werken...
Offline Fenrir - 30/11/1999 00:00
Avatar van Fenrir PHP expert [quote]Euh, je kan s (een pattern modifier) ook gewoon achter je regexp aanplakken - waar die i staat.[quote] rnHoe zou het dan moeten wordenrnDat probeerde ik eerst, en toen kreeg ik een error als unkwown delimiter blarnrnDe rest heb ik veranderd, het is nu ook weer wat sneller!rnrnBedankt!
Offline Stijn1 - 30/11/1999 00:00
Avatar van Stijn1 Gouden medaille

PHP ver gevorderde
Hehe, wat een fouten toch p had het net getypt en niet getest dus, maar je bent er nu uit
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s