ereg() zu preg_match() - wer kann helfen

08/06/2011 - 16:57 von Thomas Schmidt | Report spam
Hallo NG,

Seit kurzem bekomme ich bei einem Script folgende Meldung:
Deprecated: Function ereg() is deprecated in xxxxxx\functions.inc.php on
line 23

Es handelt sich dabei um folgende im I-Net gefundene Funktion, die auf die
Richtigkeit einer E-Mail Adresse prüft.

function isValidEmail($email) {
if
(!ereg("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+.([a-zA-Z0-9-]{2,4})$",
$email))
{
return false;
}
else
{
if (function_exists("checkdnsrr"))
{
// Anmerkung: "checkdnsrr" ist auf Windowsplattformen nicht
implementiert.
list($user, $host) = explode("@", $email);
if(checkdnsrr($host, "MX") || checkdnsrr($host, "A"))
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
}

Nach googeln weisst der Fehler auf eine demnàchst veraltete Function
"ereg()" hin und sollte mit "preg_match()" ersetzt werden. Leider komme ich
mit dem ganzen Pattern-Dingens nicht so recht klar.

Ich würde mich freuen, wenn mir einer die Funktion so abàndert, dass sie
auch > PHP 5.3.0 wieder problemlos funktioniert.

Besten Dank
Mfg Thomas
 

Lesen sie die antworten

#1 Stefan Dreyer
08/06/2011 - 18:23 | Warnen spam
On 06/08/11 16:57, Thomas Schmidt wrote:
Hallo NG,

Seit kurzem bekomme ich bei einem Script folgende Meldung:
Deprecated: Function ereg() is deprecated in xxxxxx\functions.inc.php on
line 23

Es handelt sich dabei um folgende im I-Net gefundene Funktion, die auf
die Richtigkeit einer E-Mail Adresse prüft.

function isValidEmail($email) {
if
(!ereg("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+.([a-zA-Z0-9-]{2,4})$",
$email))
[...]
Nach googeln weisst der Fehler auf eine demnàchst veraltete Function
"ereg()" hin und sollte mit "preg_match()" ersetzt werden. Leider komme
ich mit dem ganzen Pattern-Dingens nicht so recht klar.



Ganz einfach:

if

(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+\.([a-z0-9-]{2,4})$/i",
$email))

Da musst Du auch gar nicht großartig googlen, sondern einfach RTFM. Was
sich im übrigen auch lohnt, da die PRE-Funktionen sehr hilfreich sind.
Darüber hinaus ist Deine Emailvalidierungsfunktion ziemlich kapput:
- Nach RFC ist ein deutlich größerer Zeichenraum zulàssig.
- Es gibt SubTLDs, z.B. co.uk.
- Es gibt TLDs mit mehr als 4-Zeichen, z.B. .travel

Ähnliche fragen