【发布时间】:2014-07-06 00:49:11
【问题描述】:
我有一个 csv 文件,它有 6 行,如下所示:
10264,dan,Dan,37519,MILLER,6/3/2014 14:51,$28.40,Rapid,Dan@Cold.com,,
10443,Dari,"D. R, LLC",37308,SELLERS,6/2/2014 15:12,$40.00,esponse,chards@lobal.net,,
10488,EmHern,"A HOME FOR YOU,LLC",37749,MILLER,6/1/2014 8:23,$33.00, Response,23@YAHOO.COM,,
我尝试读取该 csv 并提取一些列,然后为提取的每一列添加一个管道分隔符,这是我使用的函数:
<?php
function fncReadCSV($csvFileName){
$result = array();
$row = 1;
if (($handle = fopen($csvFileName, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$outPut = "";
$outPut .= $data[0];
$outPut .="|";
$outPut .= $data[1];
$outPut .="|";
$outPut .= $data[2];
$outPut .="|";
$outPut .= $data[6];
$outPut .="|";
$outPut .= $data[8];
$outPut .="|";
array_push($result, rtrim($outPut, "|"));
$row++;
}
}
fclose($handle);
return $result;
}
echo "<pre>";
print_r(fncReadCSV("file.csv"));
echo "</pre>";
我得到的结果仅对第一行是正确的,对于第二、第三行,我得到了完整的行,因为它在 csv 中,我希望引号会破坏我的代码我该如何解决这个问题适用于带有引号的 csv 文件和不带引号的 csv 文件的代码?
结果是:
Array
(
[0] => 10264|dan|Dan|$28.40|Dan@Cold.com
[1] => 10443,Dari,"D. R, LLC",37308,SELLERS,6/2/2014 15:12,$40.00,esponse,chards@lobal.net,,
[2] => 10488,EmHern,"A HOME FOR YOU,LLC",37749,MILLER,6/1/2014 8:23,$33.00, Response,23@YAHOO.COM,,
)
我期待的结果是:
Array
(
[0] => 10264|dan|Dan|$28.40|Dan@Cold.com
[1] => 10443|Dari|"D. R, LLC"|esponse|chards@lobal.net
[2] => 10488|EmHern|"A HOME FOR YOU,LLC"|37749|23@YAHOO.COM
)
【问题讨论】: