Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP读取txt文件并验证电子邮件_Php_Email - Fatal编程技术网

PHP读取txt文件并验证电子邮件

PHP读取txt文件并验证电子邮件,php,email,Php,Email,我正在尝试创建一个脚本来验证语法和MX记录,以了解电子邮件是否正确 但由于某些原因,这是不正确的 有什么想法吗 我的TXT文件: email@facebook.com email@gmail.com asdhiadf@fdfsdf.com 我的PHP代码: $fh = fopen('emails.txt','r'); while ($line = fgets($fh)) { // Create the syntactical validation regular expression $reg

我正在尝试创建一个脚本来验证语法和MX记录,以了解电子邮件是否正确

但由于某些原因,这是不正确的

有什么想法吗

我的TXT文件:

email@facebook.com

email@gmail.com

asdhiadf@fdfsdf.com

我的PHP代码:

$fh = fopen('emails.txt','r');
while ($line = fgets($fh)) {

// Create the syntactical validation regular expression
$regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";

// Presume that the email is invalid
$valid = 0;

// Validate the syntax
if (eregi($regexp, $line))
{
    list($username,$domaintld) = split("@",$line);
    // Validate the domain
    if (getmxrr($domaintld,$mxrecords)) {
        echo(1) . "--> " . $line . "<br />";
    }
    else {
        echo (-1) . "--> " . $line . "<br />";
    }
} else {
    echo(0) . "--> " . $line . "<br />";
}

}
fclose($fh);
使用preg_match计算正则表达式,使用explode进行拆分


除了你的问题下面所有你应该考虑的评论之外,你的代码失败的原因是因为

当您读取带有fgets的行时,除最后一行外,每行末尾都会有一个新行字符,因此,如果在最后一行之后没有空行,则除了最后一个电子邮件地址之外,您的正则表达式和筛选器变量都将始终失败

要解决当前问题,您需要:

while ($line = fgets($fh)) {
  $line = trim($line);

出现此问题的原因是每行末尾的\n字符

尝试按如下方式删除它:

while ($line = fgets($fh)) {
  $line = substr($line, 0,-1);

你为什么要自己建造这个?您可以使用现有的框架/公式来实现这一点。例如,现在有什么问题?有错误吗?旁注:从PHP 5.3.0开始,此函数已被弃用。不鼓励依赖此功能。您可以简单地使用filter\u var$email、filter\u VALIDATE\u email,但由于某些原因,这是不正确的。这不是一个足够的问题描述
while ($line = fgets($fh)) {
  $line = substr($line, 0,-1);