Hallo,
es soll ein Teilstring in Anführungszeichen ermittelt werden. Zugelassen sind " und ' wobei innerhalb der Anführungszeichen diese auch maskiert vorkommen können. Bsp:
<a href="foo.html" title="das ist ein "Test" id="test">
Wie gebe ich dem RegEx-Interpreter zu verstehen, das der Teil von " oder ' bis zum nächsten solchen Anführungszeichen incl. maskierter Anführungszeichen gespeichert werden soll ?
Mein Ansatz:
(\s+) # 1. Leerzeichen vor Attrname (muß min. 1)
(\S+) # 2. Attrname
(\s*) # 3. Leerzeichen vor Gleichzeichen (kann)
=
(\s*) # 4. Leerzeichen vor Anführungszeichen (kann)
(["'])? # 5. Anführungszeichen (kann)
(?(5) # wenn Anführungszeichen
(.*?)\5 # dann Attrwert = Zeichenkette bis zum nächsten Anführungszeichen
| ([^\s>]+) # sonst Attrwert = Zeichenkette bis zum nächsten Leerzeichen, bzw. Tagende
Das Problem:
(.*?)\5
Damit wird ja der kürzeste Weg gewählt, also nur z.B. " bis " gesucht und nicht von " über " bis "
Lasse ich das Fragezeichen jedoch weg, funktioniert es auch nicht, die einzelnen Attribute werden nicht mehr einzeln erkannt...
Trotz nachschlagen im PHP-Manual komme ich nicht drauf.
MfG