Saya menggunakan PHP versi 5.3.10. Ini kodnya:
<?php $email = "test@example.c"; if (filter_var($email, FILTER_VALIDATE_EMAIL)) echo "Email: ".$email." correct"; else echo "email not correct"; ?>
Ia mengembalikan: "E-mel: test@example.c adalah betul.
Saya rasa domain peringkat teratas dengan hanya satu aksara adalah tidak betul (mengikut senarai ini: http://data.iana.org/TLD/tlds-alpha -oleh -domain.txt, saya tidak tahu ada domain peringkat tinggi sepanjang aksara)
.Jadi, adakah penapis FILTER_VALIDATE_EMAIL berfungsi dengan betul?
FILTER_VALIDATE_EMAIL tidak menyokong PHP 5.2.14
Mengesahkan alamat e-mel agak rumit. Lihat senarai ini:
Alamat e-mel yang sah
Alamat e-mel tidak sah
Sumber http://ms.wikipedia.org/wiki/Alamat_E-mel
Kebanyakan semua pelaksanaan pengesahan e-mel adalah "buggy" tetapi pelaksanaan php berfungsi dengan baik kerana ia menerima semua alamat e-mel biasa
Kemas kini:
Ditemui di http://www.php.net/manual/en/filter.filters.validate.php
Mengenai alamat "separa" yang tidak wujud. Dalam bahagian domain, ulasan dalam kod sumber (dalam ext/filter/logical_filters.c) membuktikan penolakan ini:
Berikut ialah pautan ke kelas Michael Rushton (pautan rosak, lihat kod sumber di bawah) yang menyokong RFC 5321/5322