1
我有這段代碼來讀取一個CSV文件。如何使用BOM讀取PHP中的UTF CSV文件?
$csv = array_map('str_getcsv', file($file));
var_dump($csv[0][0]).PHP_EOL;
...
echo $a['Type'];exit;
然而,當我嘗試使用標題列的第一行的鍵數組的數組,我得到一個錯誤,因爲第一列「類型」還包括BOM。 BOM包含在文件內容中,然後包含在數組鍵中。看,它認爲字符串「Type」是7個字符而不是4個,因爲它包含BOM <U+FEFF>
。
串(7) 「類型」
PHP通知 'YII \基\ ErrorException' 與消息 '未定義索引:類型'
的file()
函數不具有用於UTF一個選項。如何使用file()
來讀取UTF文件?
拍攝。希望我可以像Java流一樣設置文件編碼。我用'$ csv = array_map(函數($ line){ return str_getcsv(str_replace(「\ xEF \ xBB \ xBF」,'',$ line));#strip BOM },file($ file)); ' – Chloe
是的,無論更好還是更糟,PHP引擎都精簡地隱藏了底層的C庫,該庫將文件視爲字節流,因此文件級知識在引擎級別不存在。除此之外,你的解決方案將在任何行上刪除BOM序列,不管它出現在哪裏,這可能是不受歡迎的,並且它還需要對文件數據進行兩次完整傳遞(一個用於「str_replace」,另一個用於「str_getcsv」),也可能是不希望的。 – bishop