2014-07-24 23 views
0

刪除所有換行符和空格我想轉換爲使用這個真棒JIST一個CSV到JSON:https://gist.github.com/robflaherty/1185299PHP從CSV

我已經從一個非常陳舊的程序編程語言給予了非常CSV。 CSV只能按如下方式生成。

我需要去掉第二行是一個空白換行和理想,我想去掉所有多餘的空格每一行:

Series,   SKU,       Stock 

01000  ,  01000-1116    ,   98 
01000  ,  01000-1132    ,   0 
01000  ,  01000-116    ,  1000 
01000  ,  01000-1164    ,  3880 
01000  ,  01000-12    ,  2040 
01000  ,  01000-132    ,  2240 
01000  ,  01000-1332    ,   545 
01000  ,  01000-1364    ,   50 

我試圖在每一個組合我小武器讓這個工作。 preg_replace,trim等

有沒有人有任何建議?以下是處理行的Jist部分:

function csvToArray($file, $delimiter) { 
    if (($handle = fopen($file, 'r')) !== FALSE) { 

     $i = 0; 
     while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
      for ($j = 0; $j < count($lineArray); $j++) { 
       $arr[$i][$j] = $lineArray[$j]; 
      } 
      $i++; 
     } 
     fclose($handle); 
    } 
    return $arr; 
} 

我希望有人能幫忙!預先感謝您看一看。

回答

1

你需要檢查$lineArray和使用trim()功能,如下面的代碼:

function csvToArray($file, $delimiter) { 
    if (($handle = fopen($file, 'r')) !== FALSE) { 

     $i = 0; 
     while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
      if (count($lineArray) == 1 && is_null($lineArray[0])) { 
       continue; 
      } 
      for ($j = 0; $j < count($lineArray); $j++) { 
       $arr[$i][$j] = trim($lineArray[$j]); 
      } 
      $i++; 
     } 
     fclose($handle); 
    } 
    return $arr; 
} 
+0

賓果!感謝Marchin。你是一個傳奇。奇蹟般有效。非常感謝。 – T2theC

0

試試這個。它跳過空行並修剪值。

// Function to convert CSV into associative array 
function csvToArray($file, $delimiter) { 
    if (($handle = fopen($file, 'r')) !== FALSE) { 
    $i = 0; 
    while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
     if(count($lineArray)==1) continue; //skip empty line (will fail if file will have only one column) 
     for ($j = 0; $j < count($lineArray); $j++) { 
     $arr[$i][$j] = trim($lineArray[$j]); //trim value 
     } 
     $i++; 
    } 
    fclose($handle); 
    } 
    return $arr; 
} 
1
Try this code: 
function csvToArray($file, $delimiter) 
{ 
    if (($handle = fopen($file, 'r')) !== FALSE) { 

     $i = 0; 
     while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) { 
      for ($j = 0; $j < count($lineArray); $j++) { 
       if ($lineArray[$j] !== '') { 
        $arr[$i][$j] = $lineArray[$j]; 
       } 
      } 
      $i++; 
     } 
     fclose($handle); 
    } 
    return $arr; 
}