Moin,
Hi,
Jetzt will ich name und value einzeln haben:
[([a-zA-Z0-9_]+)\="([^"]+)"]*
"Unmatched parenteses" spuckt PHP aus.Du öffnest mit der ersten [ eine Zeichenklasse, die die Zeichen (, [, Buchstaben, Ziffern und den Unterstrich enthält, dann schließt du diese Zeichenklasse mit ] wieder. Danach kommt der Quantifier +, und danach eine runde Klammer ), zu der es keine öffnende gibt.
Warum zum Teufel muss man demn die Klammern nicht escapen? Das meinte ich mit meinem einleitenden Satz :(
Eckige Klammern mögen im Sonderangebot gewesen sein, aber du solltest sie trotzdem sparsamer verwenden.
Eigentlich nicht, ich hab ne Deutsche Tastatur, da sind eckige und geschweifte Klammern ein Gräuel. :D
Jedenfalls war das der entscheidende Hinweis, vielen Dank! Dieses Konstrukt diente dazu, dass mehrere name-value-Paare erlaubt sind (deswegen das *), was ja totaler Quatsch ist, weil ein RegEx auch mehrfach matcht.
Also:
([a-zA-Z0-9_]+)\="([^"\<\>]+)"
MfG ChrisB
Gruß,
Take