Voor een scriptje wil ik het volgende voor elkaar boxen. Wie kan mij in de goede richting duwen?
Er is een string die er als volgt uit kan zien: ((a=b)||(c=d))&&(e=f).
Door het gebruik van de haakjes zijn er dingen bij elkaar gegroepeerd. Wat er dus eigenlijk staat is (a=b OF c=d) EN (e=f).
Hoe ga ik in PHP met een (preg_)split voor elkaar krijgen dat er van de buitenste haakjes naar binnen gewerkt wordt. Eerst leest het dat er iets staat als () && (). Daarna gaat de eerste () de functie recursive in, die ziet op z'n beurt weer dat er staat () || (). Waarbij de eerste () weer de functie recursive in gaat en die ziet op zijn beurt weer dat er staat a = b.
Nu wil ik dit geheel in een array zien te krijgen, netjes van buiten naar binnen gewerkt. Zelf had ik een array als deze in gedachte:
[0] = array(
[0] = a=b
[1] = ||
[2] = c=d
)
[1] = &&
[2] = e=f
Waar ik, denk ik, naar op zoek ben is een pattern die op de buitenste haakjes kan splitten, ongeacht hoeveel het er zijn. Dan kan ik per inhoud van die haakjes de functie weer recursive aanroepen, net zo lang tot ik bij de laatste ben en er dus echt staat a=b.
Er is een string die er als volgt uit kan zien: ((a=b)||(c=d))&&(e=f).
Door het gebruik van de haakjes zijn er dingen bij elkaar gegroepeerd. Wat er dus eigenlijk staat is (a=b OF c=d) EN (e=f).
Hoe ga ik in PHP met een (preg_)split voor elkaar krijgen dat er van de buitenste haakjes naar binnen gewerkt wordt. Eerst leest het dat er iets staat als () && (). Daarna gaat de eerste () de functie recursive in, die ziet op z'n beurt weer dat er staat () || (). Waarbij de eerste () weer de functie recursive in gaat en die ziet op zijn beurt weer dat er staat a = b.
Nu wil ik dit geheel in een array zien te krijgen, netjes van buiten naar binnen gewerkt. Zelf had ik een array als deze in gedachte:
[0] = array(
[0] = a=b
[1] = ||
[2] = c=d
)
[1] = &&
[2] = e=f
Waar ik, denk ik, naar op zoek ben is een pattern die op de buitenste haakjes kan splitten, ongeacht hoeveel het er zijn. Dan kan ik per inhoud van die haakjes de functie weer recursive aanroepen, net zo lang tot ik bij de laatste ben en er dus echt staat a=b.
[ Voor 13% gewijzigd door Verwijderd op 30-09-2009 21:57 ]