php - windows csv 和 mac csv 有什么区别?

标签 php csv

我正在尝试使用此代码解析 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 时。它再次起作用。
那么实际上 mac csv 和 windows csv 之间有什么区别?
这两个的分隔符不同吗?
我应该如何更改代码以使其同时适用于两者?

最佳答案

答案在 PHP 文档注释中:

http://be2.php.net/manual/en/function.fgetcsv.php

Note: If PHP is not properly recognizing the line endings when reading files either on or created by a Macintosh computer, enabling the auto_detect_line_endings run-time configuration option may help resolve the problem.

问题在于 Windows 和类 UNIX 机器(如您的 Mac)上的行结尾之间的差异:windows ='\r\n'unix = '\n '

解决方案:在打开文件之前添加这一行:

ini_set('auto_detect_line_endings',TRUE);

关于php - windows csv 和 mac csv 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736078/

相关文章:

python - 如何使用 Python 修改 XLSX 列格式

python - 如何将 csv 上传到 s3 存储桶中的我的文件夹中?

emacs - 使用 Emacs 计算逗号分隔值

php - Base64 编码 PHP 生成的图像,而不将图像写入磁盘

php - 代码中的数据库错误,可能是 mySQL?

python - 在 Python 3.x 中使用 Pandas 合并基于列和特定列的值的两个 DataFrame

python - 怎么把500Hz csv数据文件转换成wav音频文件?

php - Nginx/PHP FPM 优雅停止 (SIGQUIT) : not so graceful

php - Doctrine 和大量数据

php - Windows MYSQL 上的 XAMPP 将启动然后突然停止但 APACHE 工作正常