Penjelasan pernyataan verifikasi email yang umum digunakan di PHP
Penulis:Eve Cole
Waktu Pembaruan:2009-06-06 18:17:18
Saya yakin siapa pun yang telah mempelajari PHP dengan baik harus mengetahui pernyataan berikut untuk verifikasi email, namun tidak banyak yang benar-benar dapat memahaminya:
<?php
if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$",$ email)) {
echo "Email Anda lolos pemeriksaan pendahuluan";
}
?>
Pada kalimat ini yang pertama adalah menerapkan fungsi eregi yang cukup mudah dipahami. Temukan saja sebuah buku dan itu akan memberi Anda penjelasan:
Sintaks: int ereg(pola string, string string, array [regs]);
Nilai yang dikembalikan: integer/array Fungsi ini mem-parsing dan membandingkan string berdasarkan aturan pola.
Nilai yang dikembalikan oleh hasil perbandingan ditempatkan di parameter array reg. Isi dari regs[0] adalah string asli, regs[1] adalah string pertama yang sesuai dengan aturan, dan reg[2] adalah string kedua yang sesuai dengan aturan. Jika parameter reg dihilangkan, maka parameter tersebut hanya akan dibandingkan, dan nilai yang dikembalikan akan bernilai true jika ditemukan.
Yang tidak mudah dipahami adalah ekspresi reguler sebelumnya: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
Dalam ekspresi reguler ini, "+" berarti string sebelumnya muncul satu atau lebih secara berurutan; "^" berarti string berikutnya harus muncul di awal, dan "$" berarti string sebelumnya harus muncul di akhir;
"." juga merupakan ".", dengan "" adalah karakter escape; "{2,3}" berarti string sebelumnya dapat muncul 2-3 kali berturut-turut. "()" berarti konten yang ditampung juga harus muncul di objek target. "[_.0-9a-z-]" berarti karakter apa pun yang terdapat dalam "_", ".", "-", huruf dalam rentang dari a hingga z, dan angka dalam rentang dari 0 hingga 9;
Dengan cara ini, ekspresi reguler ini dapat diterjemahkan seperti ini:
"Karakter berikut harus dimulai dengan (^)", "Karakter harus berisi "_", ".", "-", huruf dalam rentang dari a hingga z, angka dalam rentang dari 0 hingga 9 ([ _.0-9a-z-])", "Karakter sebelumnya muncul setidaknya sekali (+)", @, "String terdiri dari huruf yang terdapat dalam rentang dari a sampai z, dari 0 sampai 9 dimulai dengan a karakter dalam angka, diikuti oleh setidaknya satu karakter yang terdapat dalam "-", huruf apa pun dalam rentang dari a hingga z, angka apa pun dalam rentang dari 0 hingga 9, dan terakhir diakhiri dengan ][0-9a-z-]+.))", "Karakter sebelumnya muncul setidaknya sekali (+)", "Huruf dalam rentang dari a hingga z muncul 2-3 kali dan diakhiri dengan itu ([ az] {2,3}$)”
Rumit kan? Itu sebabnya orang menggunakan ekspresi reguler.