1

我有一个由 fopen 然后 fgetcsv 读取的 csv:

ini_set('auto_detect_line_endings', true);
$handle = fopen($uploadDir.$fileName,"r");
while (($aCell = fgetcsv($handle, 1000, ";")) !== FALSE) {
    //GO THROUGH ROWS
} 

我的问题是来自 Windows 的 csv 有 CRLF (\r\n) 或 LF (\n) 作为换行符。有时我有一个来自 mac 的 csv,它使用 CRLF,有时使用 CR(主要在带有 st.html 文本的文本列中)

CR 破坏了 fgetcsv,因此我没有得到正确的列和行结构,如在标题列“定义”中,我有windoof 的。

在遍历这些行之前,如何在该 csv 中将 CRs (\r) 替换为 LF (\n)?

编辑 我试过路人的想法它有效。谢谢你的提示

            $file_contents = file_get_contents($uploadDir.$fileName);
            $file_cont_tmp = str_replace("\r","\r\n",$file_contents);
            $file_cont_new = str_replace("\r\n\n","\r\n",$file_cont_tmp);
            file_put_contents($uploadDir.$fileName,$file_cont_new);
4

0 回答 0