【问题标题】:How can I make PHP's fgetcsv() to recognize the Classic Mac (CR) new line character?如何让 PHP 的 fgetcsv() 识别 Classic Mac (CR) 换行符?
【发布时间】:2011-06-13 04:36:36
【问题描述】:

我使用此代码从 CSV 文件中获取列数:

$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
    $this->number_of_columns = count($dataset);
}

它工作正常除非文件是用 Excel for Mac 2011 导出的,因为换行符是 fgetcsv 无法识别的 Classic Mac (CR) .

如果我手动将换行符从 Classic Mac (CR) 更改为 Unix (LR),那么它可以工作,但我需要自动化。

如何让fgetcsv 识别 Classic Mac (CR) 换行符?

【问题讨论】:

    标签: php newline fgetcsv


    【解决方案1】:

    来自manual

    注意:如果 PHP 不正确 识别行尾时 读取文件或创建的文件 Macintosh 计算机,启用 auto_detect_line_endings 运行时 配置选项可能有助于解决 问题。

    【讨论】:

      【解决方案2】:

      如果 Saul 的回答不起作用,我会编写一个简单的脚本来一次读取所有文件,然后用 str_replace 所有 \r 替换 \n,将结果转储到一个新文件中,然后 fgetcsv'ing 那个新文件.

      我觉得这些术语来自使用打字机的日子很有趣:
      \n = 换行(LF) - 将纸张前进一行。
      \r = 回车 (CR) - 将回车返回到打字机的左侧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多