problem mit dem email-format check

dune911

Erfahrenes Mitglied
folgende funktion hab ich jetzt eingebaut :

PHP:
// eMail-Format-Check-Funktion
function check_email($email_to_check)
{
	// Ist ein @ vorhanden?
	if (!strpos($email_to_check,"@"))
	return FALSE;
	// Mehr als ein @ vorhanden?
	$arr=explode("@",$email_to_check);
	if (count($arr)!=2)
	return FALSE;
	// Ist das Format der Adresse korrekt?
	if (!ereg("[[:alnum:]+@[[:alnum:]+\.[[:alnum:]+", $email_to_check))
	return FALSE;
	 // Gibt es den Server der Mailadresse überhaupt?
	if ((gethostbyname($arr[1])==$arr[1]) && (gethostbyname("www.".$arr[1])=="www.".$arr[1]))
	return FALSE;

	return TRUE; // Alles Ok!
}

das problem ist nur, wenn ich jetzt eine adresse
mit blub.blub@blub.de eingebe funzt das
ganze nich mehr sondern gibt mir FALSE zurück...

wie muss ich diese zeile dann abändern?
PHP:
if (!ereg("[[:alnum:]+@[[:alnum:]+\.[[:alnum:]+", $email_to_check))

danke ;)
 
Zuletzt bearbeitet:
hab das ganze jetzt umgebaut =)

PHP:
function check_email($email_to_check)
{
	if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $email_to_check))
	{
   		return TRUE;
	}
	else
	{
       return FALSE;
	}
}
 
PHP:
$regExp="^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$";
if (!(ereg($regExp,$email)))   {...}
Das wäre noch eine alternative. Btw: Den Servercheck halte ich nicht für sinnvoll, da erstens der Server down sein könnte, bzw. zu lange response, oder die Domain nur als Mailserver eingetragen sein könnte und nicht über das www erreichbar ist. Z.B.: http://www.pizza.com die Adresse ist nicht erreichbar, aber als E-Maildienst eingetragen.
 
Zurück