代码“检查是拆分后的电子邮件”出错


error in code "check is email after split "

这是代码

<?php
function is_email($input) {
  $email_pattern = "/^([a-zA-Z0-9'-'_'.]{1,})+@+([a-zA-Z0-9'-'_'.]{1,})+'.+([a-z]{2,4})$/i";
  if(preg_match($email_pattern, $input)) return TRUE;
}
$emails = "xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com
xx@xx.com";
$split_emails = split("'n",$emails);
$split_n = count($split_emails);
for ($x=0;$x<$split_n;$x++) {
if(is_email($split_emails[$x]){
echo $split_emails[$x];
}
}
?>

我确信这个功能工作正确,因为我在一封电子邮件中测试了它p.s.: $电子邮件是从"POST表单",但我编辑它把它放在这里没有HTML代码,我猜是错误在分割,所以请帮忙吗?

您应该使用explode而不是split,您还需要用trim修剪空白区域,您可以使用filter_var来验证您的电子邮件

$emails = explode("'n", $emails);
foreach ( $emails as $email ) {
    $email = trim($email);
    filter_var($email, FILTER_VALIDATE_EMAIL) and print($email . "'n");
}

参见Live Demo

我将它复制到usbwebserver进行测试。

第一个错误出现在第28行,没有关闭if语句。

if(is_email($split_emails[$x]){
应该

if(is_email($split_emails[$x])){

之后我就不能继续了,因为split语句是不支持的

查看baba的示例,以获得更好的电子邮件验证

  1. 使用explode()代替split

  2. 不鼓励使用regex测试邮件,因为PHP提供了filter_var()


$split_emails = explode( "'n",$emails );
foreach( $split_emails as $mail )
  echo filter_var( $mail, FILTER_VALIDATE_EMAIL );