Wie kann ich überprüfen, ob der Eingabewert eine gültige E-Mail-Adresse mit PHP5 ist? Jetzt benutze ich diesen Code
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
aber es zeigt veralteten Fehler. Wie kann ich dieses Problem beheben? Bitte hilf mir.
php
regex
validation
email-validation
Lerner
quelle
quelle
eregi
eine Funktion von sind) ist veraltet. Verwenden Sie stattdessen PCRE .Antworten:
Sie können die
filter_var()
Funktion verwenden, die Ihnen viele praktische Validierungs- und Desinfektionsoptionen bietet.PHP Handbuch filter_var ()
Verfügbar in PHP> = 5.2.0
Wenn Sie Ihren Code, der sich auf Ihre Funktion stützt, nicht ändern möchten, gehen Sie einfach wie folgt vor:
Hinweis : Für andere Verwendungszwecke (bei denen Sie Regex benötigen) sollte die veraltete
ereg
Funktionsfamilie (POSIX Regex-Funktionen) durch diepreg
Familie ( PCRE Regex-Funktionen ) ersetzt werden. Es gibt ein wenig Unterschiede, das Lesen des Handbuchs sollte ausreichen.Update 1 : Wie von @binaryLV hervorgehoben :
Dieser Fehler wurde bereits behoben.
Update 2 : Diese Methode wird natürlich
bazmega@kapa
als gültige E-Mail-Adresse validiert , da es sich tatsächlich um eine gültige E-Mail-Adresse handelt. Meistens im Internet soll die E-Mail-Adresse jedoch eine TLD haben :[email protected]
. Wie in diesem Blog-Beitrag vorgeschlagen (Link von @Istiaque Ahmed ), können Siefilter_var()
einen regulären Ausdruck hinzufügen , der das Vorhandensein eines Punkts im Domain-Teil überprüft (jedoch keine gültige TLD überprüft ):Wie @Eliseo Ocampos betonte, besteht dieses Problem nur vor PHP 5.3. In dieser Version wurde der reguläre Ausdruck geändert, und jetzt wird diese Überprüfung durchgeführt, sodass Sie dies nicht tun müssen.
quelle
eregi
, scheint es, dass er PHP 5.3 verwendet. Aber ja, es ist wichtig, es zu erwähnen (für andere).FILTER_VALIDATE_EMAIL
, der zu Segfault führte, wenn große Werte überprüft wurden. Eine einfache und sichere Problemumgehung, diestrlen()
zuvor verwendet wurdefilter_val()
. Ich bin mir nicht sicher über 5.3.4 final, aber es steht geschrieben, dass auch einige 5.3.4-Snapshot-Versionen betroffen waren.filter_val
oderfilter_var
?Siehe die Hinweise unter http://www.php.net/manual/en/function.ereg.php :
quelle
Dies ist ein alter Beitrag, aber ich werde eine meiner Lösungen teilen, da hier noch niemand ein Problem erwähnt hat.
Neue E - Mail - Adresse kann wie UTF-8 - Zeichen oder spezielle Domain - Namen enthält
.live
,.news
usw.Außerdem finde ich, dass einige E-Mail-Adressen kyrilisch und in allen Fällen Standard-Regex sein können oder
filter_var()
fehlschlagen werden.Deshalb habe ich eine Lösung dafür gefunden:
Diese Funktion funktioniert perfekt für alle Fälle und E-Mail-Formate.
quelle
Ich benutze immer das:
quelle
alex@.
diese immer true zurückgibt, wenn es sich nicht um eine gültige E-Mail-Adresse handelt.Bleiben Sie weg von
regex
undfilter_var()
Lösungen für die Validierung von E - Mail. Siehe diese Antwort: https://stackoverflow.com/a/42037557/953833quelle
Verwenden:
quelle
Vor der Validierung der E-Mail: Zuerst müssen Sie alle unzulässigen Zeichen aus der E-Mail entfernen.
Überprüfen Sie anschließend Ihre E-Mail-Adresse mit dieser
filter_var()
Funktion.Zum Beispiel
quelle