Ich stelle falsche E-Mail-Adressen auf und möchte nur sicherstellen, dass sie in einem gültigen E-Mail-Format vorliegen. Daher versuche ich, alle Zeichen zu entfernen, die nicht in der folgenden Liste enthalten sind:
%Vor%Ich hatte keine Probleme auf meinem Windows-Rechner, aber auf dem Linux-Dev-Server bekomme ich diesen Fehler jedes Mal, wenn dieser Code läuft:
%Vor%Ich denke, es ist die Regex-Zeichenfolge, aber ich kann es nicht festhalten. Kleine Hilfe? Danke.
Klarstellung: Ich versuche nicht, alle gültigen E-Mail-Adressen zu berücksichtigen (für meinen Zweck unnötig), ich muss nur herausfinden, was mit meiner preg_replace-Regex nicht stimmt.
g
ist kein gültiger Modifikator in PCRE (die Regex-Implementierung, die PHP verwendet), weil es einfach nicht benötigt wird; preg_replace()
führt standardmäßig globale Ersetzungen durch. Sie finden den Modifikator sowohl in True Perl Regex als auch in JavaScript Regex, aber nicht in PCRE.
Geben Sie einfach g
:
Das Problem ist, dass g
kein gültiger PCRE-Modifikator ist . Schau dir preg_match_all an.
Zusätzlich zu / g scheint der innere Teil Ihrer regulären Ausgabe auch nicht gültig zu sein:
%Vor%Erstens ist das "^" (welches der Start-of-Input-Metachar ist) innerhalb von [...] keinen Sinn (es sei denn, Sie erlauben E-Mail-Adressen, die "^" enthalten). Zweitens sollte der Bindestrich entweder entfernt oder an das Ende der Gruppe gesetzt werden, andernfalls wird er als Bereichsoperator behandelt. Und am wichtigsten, Ihr Ausdruck verbietet eine breite Palette von vollkommen gültigen E-Mail-Adressen. Sehen Sie sich einige Beispiele an.
Tags und Links php regex preg-replace warnings