gpt4 book ai didi

php - 如何验证csv文件中的电子邮件

转载 作者:行者123 更新时间:2023-12-04 03:49:59 25 4
gpt4 key购买 nike

我有一个 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;

?>

最佳答案

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

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();

}

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

关于php - 如何验证csv文件中的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64548521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com