RegEx will in PHP nicht - "unkown modifier"

DataFox

Erfahrenes Mitglied
Hi

ich habe eine RegExp die im RegexCoach super funktioniert, aber in PHP irgendwie nicht...

die Regex soll aus einem Frameset die name-Attribute aufspüren.

Code:
	$pattern = "<frame [^>]*name=[\"|']([0-9a-zA-Z_\-]*)[\"|'][^>]*>";
	$matchArray = array();
	preg_match_all($pattern, $cacheData, $matchArray, PREG_SET_ORDER);

Kriege die Fehlermeldung:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier ']' in /local_system/project/regex_test.php on line 20

So wie ich das aber sehe müsste doch alles passen und richtig escaped sein

Gruß
Laura
 
Die Perl-kompatiblen regulären Ausdrücke, die bei allen preg_*-Funktionen verwendet werden, müssen in Begrenzer eingefasst werden (hier der Schrägstrich):
Code:
/<frame [^>]*name=[\"|']([0-9a-zA-Z_\-]*)[\"|'][^>]*>/
 
Der „s“-Modifikator steht für single line („.“ trifft auch für Zeilenumbrüche zu) und „U“-Modifikator für ungreedy (Quantoren werden auf die minimale Wiederholung aufgelöst). Beispiele für beide Modifikatoren:
PHP:
$str = "foo\nbar";
var_dump(preg_match('/foo.*bar/', $str));
var_dump(preg_match('/foo.*bar/s', $str));
PHP:
$str = 'foo bar foo bar';
preg_match('/foo.*bar/', $str, $match); var_dump($match);
preg_match('/foo.*bar/U', $str, $match); var_dump($match);
 
Zurück