我有以下脚本,检查电子邮件,并与他们做一些事情,如果他们是正确的格式。我用FILTER_VALIDATE_EMAIL
下面是代码:
if(!empty($_POST['maillist'])){
$_POST['maillist'] = 'mariatettamanti@gmail.com,
H0889@sofiaertel.com,sdfd@sfs.com,';
$mails = explode(',',$_POST['maillist']);
foreach($mails as $mail){
if(!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
echo $emailErr = $mail." - Invalid email format<br />";
}else{
echo 'do job with this mail';
}
}
}
正如你所看到的,邮件被格式化为邮件,但是函数只打印第一封邮件是正确的,其余的是错误的。为什么呢?我错过了什么?由于
问题是电子邮件地址的最后一个逗号。它在最后创建和空值。要避免这种情况,可以使用isset()
if (!empty($_POST['maillist'])) {
$_POST['maillist'] = 'H0889@sofisadatel.com,info@daddsadyomiaasdmi.com,info@hotsdaelmidasami.com,';
$mails = explode(',', $_POST['maillist']);
foreach ($mails as $mail) {
if (isset($mail) && $mail != "") {// check for empty email
if(!filter_var(trim($mail), FILTER_VALIDATE_EMAIL)) {
echo $emailErr = $mail . " - Invalid email format<br />";
} else {
echo 'do job with this mail';
}
}
}
}