我們有一個8 GB的文件,每行是一個serialize()
輸出,所以它可以包含二進制數據。但我注意到數據不包含0x0A
字節,該字節用於分隔文件中的行。如何在PHP中使用0x0A分隔行來逐行讀取文件?
功能fgets()
沒有幫助,因爲它檢測到結束行兩0x0A
或0x0D
字節,所以fgets()
多見行分隔比存在。
是否有fgets()
版本只使用0x0A
字節作爲我的情況的行分隔符?
有沒有編碼我自己的讀緩衝分析線發射解決方案的另一種方法?
P.S.file_get_contents()
不像大於2GB的文件。
'$ temp = file_get_contents('foo.txt'); $ lines = preg_split('/ [\ x0a \ x0d] + /',$ temp);'? –
您可以使用fgets(),測試最後一個字符,如果它是0x0D –
,則將線拼接在一起,php會檢測\ n或\ r \ n作爲行尾。僅當auto_detect_line_endings設置爲true(false爲默認值)時,纔會將簡單的回車符檢測爲行尾。什麼是你的auto_detect_line_endings設置說的? – Jojo