David Aurelio: Regular Expression fehlerhaft

Beitrag lesen

$suche[2] = '@style='(.*)'@i';

Du vergißt an dieser Stelle, dass der Stern 'gierig' ist, also grundsätzlich so viele Zeichen vie möglich matcht.

Du möchtest aber alle Zeichen bis auf das Hochkomma matchen, brauchst also eine verneinende Zeichenklasse.

Alles was Du wissen möchtest, findest Du im Abschnitt Suchmuster-Modifikatoren des Kapitels PCRE im PHP-Manual.

Die Lösung lautet in diesem Fall:
$suche[2] = "/style=('[^']*'|\"[^\"]*\")/i";
So werden auch style-attribute "gematcht" (furchtbar, ich weiß!), deren Wert in doppelten Hochkommata steht.

schönen Gruß, David