Validasi Email PHP: Regex vs Filter_var (Panduan Teknis)

Metode Validasi Email PHP

Cara paling efisien dan direkomendasikan untuk memvalidasi alamat email di PHP adalah menggunakan fungsi bawaan filter_var() dengan filter FILTER_VALIDATE_EMAIL. Metode ini jauh lebih aman, mudah dikelola, dan mengikuti standar RFC 822 dibandingkan menulis pola Regex manual yang rentan terhadap kesalahan logika.

Implementasi filter_var (Direkomendasikan)

$email = "[email protected]";

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Email valid";
} else {
    echo "Email tidak valid";
}

Implementasi Regex (Untuk Kebutuhan Kustom)

Jika Anda memerlukan validasi yang sangat spesifik (misalnya membatasi domain tertentu), Anda dapat menggunakan preg_match(). Berikut adalah pola Regex standar yang sering digunakan:

$email = "[email protected]";
$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";

if (preg_match($pattern, $email)) {
    echo "Format email sesuai";
} else {
    echo "Format email salah";
}

Tabel Perbandingan Metode Validasi

Fiturfilter_var()Regex Manual
KemudahanSangat MudahKompleks
Standar RFCSesuai StandarTergantung Penulis
PerformaSangat CepatCepat
PemeliharaanOtomatis (PHP)Manual

Tips Troubleshooting

  • Jangan hanya mengandalkan validasi sisi server: Selalu gunakan atribut type="email" pada tag HTML5 input untuk validasi awal di sisi klien (browser).
  • Validasi DNS: Jika Anda ingin memastikan domain email tersebut benar-benar ada, gunakan fungsi checkdnsrr($domain, "MX") setelah memvalidasi format email.
  • Hindari Regex Kompleks: Regex yang terlalu panjang untuk email seringkali gagal menangkap kasus edge-case seperti alamat email dengan sub-domain atau karakter khusus yang diizinkan.

Untuk aplikasi produksi, gunakan filter_var() karena fungsi ini terus diperbarui oleh tim pengembang PHP mengikuti standar keamanan terbaru.