我不需要你做我的工作,只需指出我正确的方向。我是php的新手,我想我可以搞清楚,我只需要指出正确的方向。
我有一个包含商家信息的csv文件(公司,地址,城市,电子邮件等)
某些记录在电子邮件字段中有多个电子邮件地址。每个值用分号(;),
分隔我想要做的是每行有一个电子邮件记录。如果原始行中有3个电子邮件地址,那么当我完成时,我需要3行,每行包含一个电子邮件地址。
大多数记录只有一个电子邮件地址,但有些记录中有多达12个电子邮件地址。
我知道这里有数据常规问题,但我正在构建一个转换实用程序来提供另一个应用程序。
同样,我不是在寻找最终的代码,虽然我不会拒绝它;),我只是想指向正确的方向。
感谢您的帮助......杰夫
答案 0 :(得分:3)
首先,使用fgetcsv()来读取文件。这将自动地删除行和列:
while (($data = fgetcsv($handle, 1000, ","))) {
// do something
}
你必须知道哪个字段是电子邮件字段(根据你的列表应该是字段3
(3不是4因为$data
是一个从零开始的数组))。使用explode()拆分邮件地址:
$emails = explode(";", $data[3]);
之后,你只需要嵌套循环:
while (($data = fgetcsv($handle, 1000, ","))) {
$company = $data[0];
$address = $data[1];
$city = $data[2];
$emails = explode(" ", $data[3]);
foreach($emails as $email){
// do something with $company, $address, $email...
}
}
答案 1 :(得分:1)
这是一个提示。你有这样的CSV(公司,地址,城市,电子邮件等)。你说你有多个电子邮件由不同的字符,分号分隔。然后你可以认为字段地址是一个“分号”分隔值(一个CSV,但使用的是;而不是a),就像这封电子邮件=(email1; email2; email3;等等)
告诉我你是否需要更多帮助