Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

E-Mail-Adresse in PHP validieren mit filter_var()

Sie befinden sich: Home > Php Tutorial > E-Mail-Adresse in PHP valid...

E-Mail-Adresse in PHP validieren mit filter_var()
Eintrag am:
06.07.2009
Hits / Besucher:
11087
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
 
Beschreibung

Die Validierung von E-Mail-Adressen ist eine der häufigsten Aufgaben in der Webentwicklung. PHP bietet dafür mit filter_var() eine einfache und zuverlässige Lösung, die seit PHP 5.2 verfügbar ist.

E-Mail-Validierung mit filter_var()

Die empfohlene Methode zur E-Mail-Validierung in PHP ist filter_var() mit dem Filter FILTER_VALIDATE_EMAIL. Diese Funktion prüft die E-Mail-Adresse nach dem RFC 822 Standard und ist zuverlässiger als jede selbst geschriebene Regex.

<?php

/**
* E-Mail-Adresse mit filter_var() validieren.
* Gibt die E-Mail zurück wenn gültig, sonst false.
*/
$email = 'test@beispiel.de';

if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false) {
echo 'Die E-Mail-Adresse ' . htmlspecialchars($email, ENT_QUOTES, 'UTF-8') . ' ist gültig.';
} else {
echo 'Das ist keine gültige E-Mail-Adresse!';
}
?>

Wiederverwendbare Validierungsfunktion

Für den praktischen Einsatz empfiehlt sich eine eigene Funktion, die alle Prüfungen bündelt:

<?php

/**
* Prüft eine E-Mail-Adresse auf Gültigkeit.
*
* @param string $email Die zu prüfende E-Mail-Adresse
* @return bool true wenn gültig, sonst false
*/
function email_check(string $email): bool
{
/** Leerzeichen entfernen */
$email = trim($email);

/** Syntaxprüfung mit filter_var */
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
return false;
}

return true;
}

/** Anwendungsbeispiel */
$email = 'info@php-space.info';

if (email_check($email)) {
echo 'E-Mail-Adresse ist gültig.';
} else {
echo 'E-Mail-Adresse ist ungültig.';
}
?>

Erweiterte Prüfung mit DNS-Check

Zusätzlich zur Syntaxprüfung können Sie mit checkdnsrr() verifizieren, ob die Domain der E-Mail-Adresse tatsächlich existiert und einen Mailserver (MX-Record) besitzt:

<?php

function email_check_erweitert(string $email): bool
{
$email = trim($email);

/** Schritt 1: Syntaxprüfung */
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
return false;
}

/** Schritt 2: Domain extrahieren */
$domain = substr($email, strrpos($email, '@') + 1);

/** Schritt 3: DNS-Prüfung - hat die Domain einen MX-Record? */
if (!checkdnsrr($domain, 'MX')) {
return false;
}

return true;
}

/** Anwendungsbeispiel */
var_dump(email_check_erweitert('test@beispiel.de'));
var_dump(email_check_erweitert('test@diese-domain-gibt-es-nicht-xyz.de'));
?>

Warum kein eigener regulärer Ausdruck?

Eigene reguläre Ausdrücke für E-Mail-Validierung sind fehleranfällig und decken selten alle gültigen E-Mail-Formate ab. Typische Probleme:

  • Unescapte Punkte im Regex (. matcht jedes Zeichen statt nur einen Punkt)
  • Fehlende Unterstützung für neue Top-Level-Domains (z.B. .museum, .berlin)
  • Fehlende Unterstützung für internationale Zeichen (Umlaute, kyrillische Buchstaben)
  • Der E-Mail-Standard (RFC 5321/5322) ist komplex – ein vollständiger Regex wäre extrem lang

filter_var() implementiert diese Regeln bereits korrekt und wird mit jeder PHP-Version aktualisiert.

Zusammenfassung

  • Verwenden Sie filter_var($email, FILTER_VALIDATE_EMAIL) als Standardmethode
  • Ergänzen Sie bei Bedarf einen DNS-Check mit checkdnsrr()
  • Vermeiden Sie eigene reguläre Ausdrücke für E-Mail-Validierung
  • Escapen Sie E-Mail-Adressen bei der Ausgabe immer mit htmlspecialchars()

 

Tags:

 

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.