E-posta biçimi REGEX PHP-orada birçok bunun gibi ama bu benim

2 Cevap php

Ah, ve kırık bulunuyor:

Tüm sayılar, harfler ve sadece e-posta ilgili noktalama (. _-@) Benim e-posta alanları sterilize izin mükemmel çalışma regex vardı, ve sonra onu doğru kontrol, uygun bir e-posta regex ekleyerek güzel olacağını düşündüm desen. Bu şimdi ne var:

function check_chars_email($str) {
$str_replace = preg_replace("/[^a-zA-Z0-9-@_\.]/","",$str);
if(preg_match("/^(.*)@(.*)\.(.*)$/", $str_replace)) {
return $str_replace;
} else {
return FALSE;
}

Ben *. Etrafında parantez gerekir ama o daha okunaklı hale getirir bulmuyorum farkında değilim.

O işlevini çağırdığınızda, bu gibi:

$esc_email = mysqli_real_escape_string($mysqli, check_chars_email($_POST["email"]));
$tr_email = trim($esc_email);
$_SESSION["email"] = $tr_email;

Ve ben o zaman bu benim kayıt yazısının başında bunu doğrulamak için, diğer şeyler arasında, kullanın:

($ Tr_email === YANLIŞ)

Ve geçerli bir e-posta adresi ile çalışıyor rağmen, ben bir başarısızlık olsun. Değişken boşsa ben de test ediyorum, ben yerine === YANLIŞ == deneyebilirsiniz sanırım, ama ben mümkün olduğunca kesin olmak istiyorum.

Herkes herhangi bir düşünce var mı?

2 Cevap

PHP zaten bunu yaptığında Neden bu bir regex kullanmak istiyorsunuz?

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  // it's valid
}

Bkz filter_var() and validate filters.