2011-01-21 65 views
7

我用這個代碼來獲得列的數量從一個CSV文件:如何讓PHP的fgetcsv()識別經典Mac(CR)新行字符?

$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中是那麼經典的Mac( CR)其中fgetcsv不能識別。

alt text

如果我手動改變從經典的Mac(CR)爲Unix(LR)換行,那麼它的工作原理,但我想這能實現自動化。

如何讓fgetcsv識別經典Mac(CR)新行字符?

回答

18

manual

注意:如果PHP沒有正確 認識到行結尾時 讀取文件無論是在或 Macintosh計算機創建,使 auto_detect_line_endings運行時 配置選項可能有助於解決 的問題。

+1

+1擊敗我約40秒。 – 2011-01-21 14:29:13

1

如果掃羅的回答是不行的,我會寫一個簡單的腳本文件中的所有一次讀取和str_replace函數與\ n的所有\ r,結果傾倒到一個新的文件,然後fgetcsv'ing那個新文件。

我發現這些術語來自使用打字機時的有趣之處:
\ n =換行符(LF) - 使紙張前進一行。
\ r =回車(CR) - 將回車返回到打字機的左側。