【发布时间】:2019-01-02 03:32:13
【问题描述】:
我有需要用 php 读取的 csv 文件。我使用了 2 种方法,但主题有问题。
我使用的方法是: 1- file_get_contents 2-fgetcsv 让我们解释一下 csv 文件。关于文件的问题是字段包含用于分隔符的逗号及其困扰。 第一种方法很快,但字段中的逗号使其无法正常工作,如数字分隔符 14,200 。我用一个名为固定数字的函数修复了它。但是仍然有包含逗号的随机文本并且不遵循我可以修复它们的任何规则 大 csv 的第二种方法非常慢,我无法看到它的工作原理 第一种方法的代码如下:
$myFile = file_get_contents($file);
$lines = explode("\r\n",$myFile);//file to an array
while($counter <= count($lines)){
$data=$lines[$counter];
$tmp=fixnumbers($data);
$tmp=eregi_replace('"', '',$tmp);
$tmp=explode(',',$tmp);
if(count($tmp)> 0 ){
$newdata[$datacounter]=$tmp;//explode('*0*',$data);
$datacounter++;
}
$counter++;
}
第二种方法在这里:
$handle= fopen($file,"r");
$row=1;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$mydata[$row][$c]=$data[$c] . "<br />\n";
}$row++;
}
print "<div class=\"longList\"><pre>";
print_r($mydata);
print "</pre></div>";
fclose($file);
}
【问题讨论】:
-
你能贴几行你的csv文件吗?如果一个数字字段中有逗号,那么它应该是一个文本字段并被引用,
fgetcsv应该正确处理。 -
这是一个示例文件,但不是英文的:rapidgator.net/file/ef4f99844b702a8fa3871cc7acaee4af/…
-
ang fgetcsv 在我的经验中比 file_get_content 慢
-
我看过的几行似乎引号被正确应用了。
fgetcsv应该可以为您处理。 -
我用 fgetcsv 运行第二个代码并使用这个文件。但它需要超过 10 分钟,仍然没有输出或最大 php 执行时间错误