PHP读取txt文件并验证电子邮件
我正在尝试创建一个脚本来验证语法和MX记录,以了解电子邮件是否正确 但由于某些原因,这是不正确的 有什么想法吗 我的TXT文件: email@facebook.com email@gmail.com asdhiadf@fdfsdf.com 我的PHP代码: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
$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);