【发布时间】:2013-05-13 13:48:56
【问题描述】:
我正在尝试使用此代码解析 csv 文件
if (($handle = fopen($csvFilePath, "r")) !== FALSE) {
$c=0;
$string="";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($c>0)
{
if(($data[$email]!="") and ($data[$firstname]!="") and ($data[$lastname]!=""))
{
$string.='(1,';
$string.="'".$data[$email]."',";
$string.="'".$data[$firstname]."',";
$string.="'".$data[$lastname]."',";
$string.="'".Yii::app()->params['clientimporttext']."'";
$string.='),';
}
}
$c++;
}
fclose($handle);
}
在 windows csv 上运行良好。
但是当我从 mac 创建一个 csv 并解析它不工作时。(它无法识别行尾),
当我使用 mac 打开相同的 windows csv 并使用相同的代码进行解析时,它也不起作用。
但是当我将它保存为 windows csv 时。它再次起作用。
那么实际上 wat 是 mac csv 和 windows csv 之间的区别吗?
这两个的分隔符不同吗?
我应该如何更改代码以使其适用于两者?
【问题讨论】:
-
区别在于行尾字符.... 注意:如果 PHP 在读取 Macintosh 计算机上或由 Macintosh 计算机创建的文件时无法正确识别行尾,则启用 auto_detect_line_endings 运行时配置选项可能帮助解决问题。
-
查看
auto_detect_line_endings