Neden e-posta PHP iş için regex değil mi?

6 Cevap php

Ben JavaScript aynı ifade var ama sunucu tarafı doğrulama için PHP çalışmaz. İşte kod

if (ereg('/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\\.([a-zA-Z])+([a-zA-Z])+/',$_POST['email-address']))
    echo "valid email";
else
    echo "invalid email";

6 Cevap

preg_match kullanmak, ereg değil. ereg regex dizeleri kapsayan bir çizgi karakteri kullanmayın.

Ayrıca çift ters eğik çizgi (gerçi, bu konuda emin değil) PHP tek tırnaklı dize gerekli olmayabilir

PHP ile geliyor filtre:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {

echo "E-mail is not valid";

} else {

echo "E-mail is valid";

}

Ben aşağıdakileri kullanabilirsiniz. Ben de karşılaştırarak önce TRIM () giriş dizesi üzerinde çalışır:

function is_email($string) {
  if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string)) {
    return true;
  } else {
    return false;
  }
}

Ben şimdi Cal Henderson, Dave Çocuk, Phil Haack, Doug Lovell ve RFC 3696 dan test durumlarda harmanlanmış ettik. 158 testi adresleri tüm.

Ben bulabildiğim tüm doğrulayıcılarıyla karşı tüm bu testleri koştu. Karşılaştırma burada: http://www.dominicsayers.com/isemail

Insanların doğrulayıcılar artırmak gibi up-to-date bu sayfayı tutmaya çalışacağım. Bu testleri ve yapıcı eleştiri derleme onların yardım ve işbirliği için Cal, Dave ve Phil sayesinde my own validator.

İnsanlar errata against RFC 3696 Özellikle farkında olmalıdır. Kanonik örnekler üç gerçek geçersiz adresler içindedir. Ve bir adres maksimum uzunluğu 254 veya 256 karakter, not 320.

Çünkü sen (+) ifadeleri art arda bağlamak için kullandığınız sembol olabilir.

Neyse bu bir denemelisiniz:

\ W +. ([-. + '] \ W +) @\w+([-.]\w+) \ + ([. -] \ W +) w *