【问题标题】:How to validate email in csv file如何验证 csv 文件中的电子邮件
【发布时间】:2023-03-16 20:13:01
【问题描述】:

我有一个 csv 文件,我通过将它存储在一个数组中来解析和显示它。我想知道如何在将邮件插入 mysql 之前验证邮件或确保其格式正确?而且,如果邮件没有被验证,它应该显示一个错误并且不将该行插入到 mysql。

我知道我可以使用 filter_var($email, FILTER_VALIDATE_EMAIL) !== false;,但我不确定如何在我的代码中使用它,因为它位于数组中(电子邮件的值)。任何帮助表示赞赏。

我的代码:

<?php 
require "database.php";

$lines = file('users.csv', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
$csv = array_map('str_getcsv', $lines);
$col_names = array_shift($csv);

$users = [];
try {
$stmt = $dbh->prepare("INSERT INTO users(name, surname, email) 
VALUES(:name, :surname, :email)");
foreach($csv as $row) {
    $users[] = [
        $col_names[0] => ucfirst(strtolower($row[0])),
        $col_names[1] => ucfirst(strtolower($row[1])),
        $col_names[2] => strtolower(strtolower($row[2])), //that's the mail
    ];
    $stmt->bindValue(':name', $col_names[0], PDO::PARAM_STR);
    $stmt->bindValue(':surname', $col_names[1], PDO::PARAM_STR);
    $stmt->bindValue(':email', $col_names[2], PDO::PARAM_STR);
    $stmt->execute();
   
}
}catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$dbh = null;

?>

【问题讨论】:

标签: php mysql validation email


【解决方案1】:

您可以在循环中简单地检查它,如下所示

foreach($csv as $row) {

if (filter_var(strtolower(strtolower($row[2])), FILTER_VALIDATE_EMAIL) === false) {
  echo("".strtolower($row[2]))." is not a valid email address"); // You can break the loop and return from here
}

    $users[] = [
        $col_names[0] => ucfirst(strtolower($row[0])),
        $col_names[1] => ucfirst(strtolower($row[1])),
        $col_names[2] => strtolower(strtolower($row[2])), //that's the mail
    ];
    $stmt->bindValue(':name', $col_names[0], PDO::PARAM_STR);
    $stmt->bindValue(':surname', $col_names[1], PDO::PARAM_STR);
    $stmt->bindValue(':email', $col_names[2], PDO::PARAM_STR);
    $stmt->execute();
   
}

除此之外,我建议您为此创建一个批量插入。永远不要在循环中执行插入查询

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 2022-11-17
    • 2021-11-21
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多