gpt4 book ai didi

php读取文件用于mysql导入

转载 作者:可可西里 更新时间:2023-11-01 06:32:20 24 4
gpt4 key购买 nike

我有一个允许人们取消订阅其他网站(邮件列表或垃圾邮件等...)的网站

我的网络应用程序允许客户和用户上传加密的电子邮件列表以进行批量退订。

我有一张 table :取消订阅。该表有电子邮件和域名。

文件结构是这样的:

jhq232q3hq2yq3yuh2qyuqU/A$Ja324ju3a4jah34u3w$UQ"$Uq4uq34/hRYHSEa34uw34uQ"/YQ/$84?%JHHdfhdFJKAjaRJSErjsrjseW%$?p09-*Y+_)y8p7uYJgADGq2/TYQgSj1qR"3tQ"/gEHseruDUId

here's my PHP:

function decrypt($line) {
// do my logic etc...
return $line;
}
function isEmail($email) {
if(preg_match("/^([a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9_-]+)+$/", $email)){
return true;
}
return false;
}

function checkEmail($email) {
// logic
return array('baddomain.com');
}

function emailExists($email) {
// my logic
return TRUE; // for example
}

$file = file_get_contents('sample.txt');

$lines= explode("\n", $file);
foreach($lines as $line) {
if(!empty($line)) {
$line = decrypt($line);
if(isEmail($line)) {
$services = checkEmail($line);
if(is_array($service)) {
foreach($services as $service) {
insertEmail($db, $service, $line); // this is used
}
}
}
}
}

检查电子邮件功能检查电子邮件是否在所有列表中取消订阅,如果所有内容都取消订阅则返回 false,如果没有则返回一个数组(服务列表 = 域)。

现在我的问题是,每次我想检查电子邮件是否有效时,它都会返回 false。我的加密工作正常并且是防弹的。

我错过了什么?

最佳答案

首先,您的脚本使用 \n 导入文件,但如果有人使用 \r\n 这样的 Windows 字符上传文件,您的脚本将无法运行。

其次,您的电子邮件正则表达式无法正常工作。我建议使用 filter_var .

我会为您的表格推荐的是创建每日表格。这样,当您查询表时,执行起来会更快。如果您只有一个表,其中 varchar 作为索引,这在一段时间后可能会很慢(假设人们想要选择退出不良网站 [我认为他们这样做]) - 但那只是我.

CREATE TABLE `unsub_20111127` (
`email` varchar(255) NOT NULL,
`domain` varchar(255) NOT NULL,
`is_unsubscribed` tinyint(3) NOT NULL DEFAULT 0,
PRIMARY KEY (`email`, `domain`),
KEY is_unsubscribed (`is_unsubscribed`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

这样可以更轻松地每次处理少量数据。我添加了一个状态,以防您必须再次重复该过程,因此您只能使用 is_unsubscribed = 0(未处理)

处理数据

(如果您需要创建一个读取所有表的表,您可以创建一个 merge table );

PHP:

function insertEmail($db, $service, array $data) {
// logic for insert
$sql = 'INSERT IGNORE INTO table_YYYYMMDD VALUES ' . implode(',', $data);
}

function createTable($date) {
// logic for insert
$sql = 'CREATE TABLE IF NOT EXISTS table_' . $date . ' /* etc...*/';
}

// start

// create the table for the next day if not exists
createTable(date('Ymd', strtotime('tomorrow')));

$file = file('sample.txt', FILE_IGNORE_NEW_LINES ^ FILE_SKIP_EMPTY_LINES);

$emailList = array();

foreach($file as $line) {
$line = decrypt($line);
if(!filter_var($line, FILTER_VALIDATE_EMAIL)) {
$services = checkEmail($line);
if(is_array($services)) {
foreach($services as $service) {
$emailList[] = "('" . $line . "', '" . $service . "', 1)";
}
if(!empty($emailList)) {
insertEmail($db, $service, $emailList);
}
$emailList = array();
}
}
}

关于php读取文件用于mysql导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287033/

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