Ik krijg van een programma een regel met daarin een aantal sleutelwoorden met daarachter tussen haakjes een waarde. Wanneer die waarde een haakje bevat, is die vooraf gegaan door een slash. Voorbeeldje:
Die wil ik met preg_match_all in 1 keer splitten naar sleutels met waarden (dus 'id' bij '3', en 'name' bij 'test (1 van 2).film').
Nu geeft het haakje-met-slash-ervoor problemen. Ik heb al een boel geprobeerd en dit leek me het meest in de buurt van een goede oplossing komen:
uitleg:
([a-zA-Z]*) matcht de sleutel.
\((.*?) matcht haakje openen en de zooi erachter (un-gready, dus het eerste haakje dat hij vindt).
[^\\]\) zou dan niet-slash gevolgd door een haakje moeten vinden. PHP kan dan echter geen 'terminating ]' vinden, dus hij denkt dat ik de vierkante haakje heb geescaped.
Zonder geescapede haakjes en zonder [^\\] werkt het prima. Wie kan me helpen?
code:
1
| $line = 'id(3) name(test\(1 van 2\).film)'; |
Die wil ik met preg_match_all in 1 keer splitten naar sleutels met waarden (dus 'id' bij '3', en 'name' bij 'test (1 van 2).film').
Nu geeft het haakje-met-slash-ervoor problemen. Ik heb al een boel geprobeerd en dit leek me het meest in de buurt van een goede oplossing komen:
code:
1
| preg_match_all('/([a-zA-Z]*)\((.*?)[^\\]\)/', $line, $info); |
uitleg:
([a-zA-Z]*) matcht de sleutel.
\((.*?) matcht haakje openen en de zooi erachter (un-gready, dus het eerste haakje dat hij vindt).
[^\\]\) zou dan niet-slash gevolgd door een haakje moeten vinden. PHP kan dan echter geen 'terminating ]' vinden, dus hij denkt dat ik de vierkante haakje heb geescaped.
Zonder geescapede haakjes en zonder [^\\] werkt het prima. Wie kan me helpen?
[ Voor 5% gewijzigd door ajvdvegt op 15-01-2003 13:25 ]
I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum