Ik probeer een UBB code parser te bouwen die meerdere variables per tag ondersteunt.
De methode die ik als eerste had werkte wel, maar in sommige gevallen niet, dus ben ik opnieuw begonnen.
De volgende 2 voorbeelden moeten mogelijk zijn:
[kolom]hier de tekst[/kolom]
[kolom w=450]hier ook tekst[/kolom]
Ik heb ook tags met 3 opties, bijv. [blok type=1 title=blaat img=bla.gif]tekst in blok[/blok]
Maar dat moet in principe goed te doen zijn als de eerste voorbeelden werken.
Mijn code:
Die code werkt een beetje. Dat wil zeggen, de [kolom] tag doet het. Echter, de tag met variable niet. Ik verdenk mijn regex ervan dat hij de spatie niet goed opvangt, maar ik kom er echt niet uit. Al diverse regex sites erop nageslagen en ubb parser code bekeken, maar het lukt me echt niet
Hoe kan ik dit het beste aanpakken?
Oja, het is geen optie om iets als [kolom=450] te doen, dit ivm de eis van meerdere variabelen...
De methode die ik als eerste had werkte wel, maar in sommige gevallen niet, dus ben ik opnieuw begonnen.
De volgende 2 voorbeelden moeten mogelijk zijn:
[kolom]hier de tekst[/kolom]
[kolom w=450]hier ook tekst[/kolom]
Ik heb ook tags met 3 opties, bijv. [blok type=1 title=blaat img=bla.gif]tekst in blok[/blok]
Maar dat moet in principe goed te doen zijn als de eerste voorbeelden werken.
Mijn code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function parseCode($text){ $tagArray['kolom'] = array('open'=>'<td>','close'=>'</td>'); $tagArray['kolom w=(.*)'] = array('open'=>'<td width="','close'=>'">\\2</td>'); foreach($tagArray as $tagName=>$replace){ $tagEnd=preg_replace('/\W/Ui','',$tagName); $text = preg_replace("|\\[$tagName\](.*)\\[/$tagEnd\]|si","$replace[open]\\1$replace[close]",$text); } foreach($sTagArray as $tagName=>$replace){ $text= preg_replace("|\\[$tagName\]|Ui","$replace[tag]",$text); } return $text; } |
Die code werkt een beetje. Dat wil zeggen, de [kolom] tag doet het. Echter, de tag met variable niet. Ik verdenk mijn regex ervan dat hij de spatie niet goed opvangt, maar ik kom er echt niet uit. Al diverse regex sites erop nageslagen en ubb parser code bekeken, maar het lukt me echt niet

Hoe kan ik dit het beste aanpakken?
Oja, het is geen optie om iets als [kolom=450] te doen, dit ivm de eis van meerdere variabelen...