【发布时间】:2011-10-22 18:05:22
【问题描述】:
我有一些代码从 txt 文件中获取电子邮件列表并将它们插入数据库,如果电子邮件已经在所述数据库中,请确保不要添加电子邮件。我现在要做的是过滤从 txt 文件中读取的电子邮件,如果它们与 $filter 数组中的任何字符串完全或部分匹配,则不要插入它们。换句话说,如果电子邮件在电子邮件地址中的任何位置包含“gmail”、“.ru”或“exec”,我不希望添加它。
任何能帮助我止血的方法都很棒!
代码:
$TheFile = "emails.txt";
$handle = fopen($TheFile, 'r');
$good_count = 0;
$bad_count = 0;
$filter= array("gmail",".ru","exec");
while (!feof($handle))
{
$Data = fgets($handle, 1024);
$output = explode (",",$Data);
$exist = mysql_query("SELECT * FROM table WHERE email='$output[0]'");
if (mysql_num_rows ($exist) == 0) {
$email = strtolower($output[0]);
$sql = "INSERT INTO table SET email='$email'";
mysql_query($sql);
$good_count = $good_count + 1;
}
else {
$bad_count = $bad_count + 1;
}
}
【问题讨论】:
-
另外考虑你可以在
INSERT IGNOREorINSERT REPLACE中跳过或覆盖重复值。 -
谢谢,但这并不是我真正想要的。我已经在清除重复项(可能不是最有效的方法)。我需要将每个条目与 $filter 数组进行匹配,如果有匹配项则不要插入它们。