測試環境php5.4,伺服器環境php5.2,伺服器上無法讀取,測試環境正常。 請問一下,我php讀取csv檔案的時候,帶雙引號的欄位能讀取出來,不帶雙引號的欄位讀取不出來,這個問題是怎麼回事呢?
在有的機器上面是正常的,在有的機器上面是不能讀取出來。
csv是excel產生的,查看了excel的協助檔案,當儲存格裡面有逗號的時候,會自動添加雙引號。 `
if (isset($_POST['import'])) {
$file = $_FILES['csv_goods'];
$file_type = substr(strstr($file['name'], '.'), 1);
// 檢查檔案格式if ($file_type != 'csv') { echo '檔案格式不對,請重新上傳!'; exit;}$handle = fopen($file['tmp_name'], "rb");require_once('./function.php');$row = '';while ($data = fgetcsv($handle, 1000, ',')) { unset($setsqlarr); unset($rw); unset($re); $row++; if ($row == 1) continue; $num = count($data); for ($i = 0; $i < $num; $i++) { //處理資料 //這裡讀取出來的資料,帶雙引號的正確,不帶雙引號的讀取不出來。 }}`
回複內容:
測試環境php5.4,伺服器環境php5.2,伺服器上無法讀取,測試環境正常。 請問一下,我php讀取csv檔案的時候,帶雙引號的欄位能讀取出來,不帶雙引號的欄位讀取不出來,這個問題是怎麼回事呢?
在有的機器上面是正常的,在有的機器上面是不能讀取出來。
csv是excel產生的,查看了excel的協助檔案,當儲存格裡面有逗號的時候,會自動添加雙引號。 `
if (isset($_POST['import'])) {
$file = $_FILES['csv_goods'];
$file_type = substr(strstr($file['name'], '.'), 1);
// 檢查檔案格式if ($file_type != 'csv') { echo '檔案格式不對,請重新上傳!'; exit;}$handle = fopen($file['tmp_name'], "rb");require_once('./function.php');$row = '';while ($data = fgetcsv($handle, 1000, ',')) { unset($setsqlarr); unset($rw); unset($re); $row++; if ($row == 1) continue; $num = count($data); for ($i = 0; $i < $num; $i++) { //處理資料 //這裡讀取出來的資料,帶雙引號的正確,不帶雙引號的讀取不出來。 }}`
http://www.php.net/manual/en/function.fgetcsv.php
文檔裡寫的很清楚,第二個參數要求比你csv檔案裡最長行的長度要大,你要是不確定最長的行有多長就乾脆不用加第二個參數,另外第三個參數預設值就是,,完全沒有必要多此一舉。
while ($data = fgetcsv($handle, 1000, ',')) {
建議改成
while ($data = fgetcsv($handle)) {
最後:文檔裡的範例程式碼只是樣本,不要照抄!