如何清理我的Excel文件(CSV,XLSX,...)数据库在PHP在我的情况下?

lymnna71  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(145)

我有三个不同的(3)Excel文件(在.xlsx.csv),其标题包含Email列被放置在不同的位置(有时在第二位,有时在第五甚至第七位)的每个文件。
知道我试图用来删除其电子邮件列无效的所有行的两段代码如下:

// Validate Emails with PHP Coding:
if (filter_var($email_address, FILTER_VALIDATE_EMAIL) === false || preg_match('/@.+\./', $email_address) === false) {
    // email is not valid syntax
}

// Check Email Domain MX Record with PHP (capture domain extension): 
$email_host = strtolower(substr(strrchr($email_address, "@"), 1));
// set host to fully qualified domain:
$email_host = idn_to_ascii($email_host.'.');
if (!checkdnsrr($email_host, "MX")) {
    // email invalid -> domain does not have a valid MX record
}

你能帮我合并上面的两个代码,检查电子邮件服务器名称的有效性,以清理(* 通过删除所有行的电子邮件列无效 )我的数据库( 知道如何所有Excel数据库没有标题级别,电子邮件列在同一位置 *)???
谢谢你帮我

eoxn13cs

eoxn13cs1#

听起来你只需要把这个逻辑转移到一个函数中就可以了。

function isEmailValid(string $email_address): bool
{
    // Validate Emails with PHP Coding:
    if (filter_var($email_address, FILTER_VALIDATE_EMAIL) === false || preg_match('/@.+\./', $email_address) === false) {
        return false;
    }

    // Check Email Domain MX Record with PHP (capture domain extension): 
    $email_host = strtolower(substr(strrchr($email_address, "@"), 1));
    // set host to fully qualified domain:
    $email_host = idn_to_ascii($email_host.'.');
    if (!checkdnsrr($email_host, "MX")) {
        return false;
    }
    
    return true;
}

注意,我并没有检查任何用于电子邮件验证的实际逻辑,我只是 Package 了它。

相关问题