RegExp Quantifier: Eins oder keins - funktioniert nicht!

DataFox

Erfahrenes Mitglied
Hallo

Ich habe ein geniales Pattern:

Code:
$pattern = "#<frame [^>]*name=[\"|']([0-9a-zA-Z_\-]*)[\"|'][^>]*>#isU";

Dieses findet ein Frame-Element in einem Frameset, und darin den Wert des name-Attributes.

Aber nur, wenn der Wert des name-Attributes in double- oder singlequoes stht. Ansonsten findet die RegExp nichts.

Aber genau das ist das Problem, denn es kommt vor, das etwas NICHT in double- oder singlequotes steht. Den Fall muss ich mit abdecken, und das habe ich so probiert:
Code:
$pattern = "#<frame [^>]*name=[\"|']?([0-9a-zA-Z_\-]*)[\"|']?[^>]*>#isU";

und so:

Code:
$pattern = "#<frame [^>]*name=[\"|']{0,1}([0-9a-zA-Z_\-]*)[\"|']{0,1}[^>]*>#isU";

und so:

Code:
$pattern = "#<frame [^>]*name=([\"|']){0,1}([0-9a-zA-Z_\-]*)([\"|']){0,1}[^>]*>#isU";

alle 3 Versuche enthalten dann nur noch den gesamten <frame ...> Tag im Match-Array. Habe ich mit print_r ausgegeben. Nichts brauchbares drin. Nur wenn ich die Quantifier-Versuche unterlasse bekomme ich mein Name-Attribut, und dann auch nur wenn es in double- oder singlequotes steht.

Bin für jeden Hinweis dankbar.

Gruß
Laura
 
Zurück