2012-04-05 4 views
0

Ich bin nicht sehr gut mit regulären Ausdrücken vertraut, so dass ich nicht verstehe, warum ich diesen Fehler bekomme.Erhalten eines unbekannten Modifikatorfehlers bei der Verwendung einer RegEx

ich den folgenden Code bin mit den E-Mail all $str in der Zeichenfolge entsprechen und sie in dem Array Spar $match:

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/", 
    $str, 
    $match 
); 

Anscheinend gibt es ein Problem in der Regex (was ich von here bekam), weil Ich erhalte diesen Fehler:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '=' in C:\xampp\htdocs\project\Framework\Sanitizer.class.php on line 38

Kann mir jemand sagen, was das Problem ist?

Dank

Antwort

4

Sie haben zu entkommen Schrägstrich vor dem Gleichheitszeichen, zB:

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/", 
    $str, 
    $match 
); 

"/" ist th e Trennzeichen für den gesamten Ausdruck, so dass es in der Regex selbst maskiert werden muss

+0

Großartig, es hat funktioniert! – federicot

1

Sie müssen sich mit einem umgekehrten Schrägstrich in dieser Zeichenfolge viele der Charaktere entkommen. Einige davon, denen Sie entkommen möchten, sind: /?^{|}.

ich es so hätte geschrieben:

preg_match_all(
    "/^[a-zA-Z0-9.!#$%&’*+\/=\?\^_`\{\|\}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/", 
    $str, 
    $match 
); 

Ich finde diese Seite sehr nützlich, wenn es um passende E-Mail-Adressen kommt:

http://www.regular-expressions.info/email.html

die Vorwärts
+0

Könnte genau zeigen, welche Nutzungen dieser Zeichen müssen entgangen werden. Es gibt ein paar Orte, an denen sie eine gültige, nicht genutzte Nutzung haben. –

+0

Ich bin kein Experte für reguläre Ausdrücke, aber ich finde dies eine nützliche Seite, wenn es um Regexps für E-Mail-Abgleich geht: http://www.regular-expressions.info/email.html. –