2012-11-30 59 views
0

Im的某些部分使用以下代碼導入具有兩列的CSV - 帳戶&電話:清理陣列

$csv = array(); 
$file = fopen('import.csv', 'r'); 

while (($result = fgetcsv($file)) !== false) 
{ 
    $csv[] = $result; 
} 

fclose($file); 

結果看起來是這樣的:

Array 
(
    [0] => Array 
     (
      [0] => 5182334 
      [1] => (360) 293-7786 
     ) 

    [1] => Array 
     (
      [0] => 8372855 
      [1] => (360) 755-3237 
     ) 

    [2] => Array 
     (
      [0] => 8373250 
      [1] => (360) 873-8853 
     ) 

    [3] => Array 
     (
      [0] => 8373226 
      [1] => (360) 588-1905 
     ) 
) 

我需要做的是通過數組循環,並清理電話號碼刪除空格,parans等我知道如何做清理,但無法弄清楚如何循環通過陣列來做清洗。

+0

因爲它似乎該電話號碼爲int他數組第二元件,只是做'$結果[1] =清理($結果[1]);'在你的代碼中。 –

回答

3

您可以使用array_mappreg_replace例如。

function clean($item) { 
    $item[1] = preg_replace('#[^\d]#', '', $item[1]); 
    return $item; 
} 

$csv = array_map("clean", $csv); 

或者直接在裝載階段:

$csv = array(); 
$file = fopen('import.csv', 'r'); 

while (($result = fgetcsv($file)) !== false) 
{ 
    $result[1] = preg_replace('#[^\d]#', '', $result[1]); 
    $csv[] = $result; 
} 
+1

數字8和9會發生什麼?應該是| [^ \ d] | –

+0

錯字:),修正,謝謝。 –

+0

對於使用array_map和preg_replace的+1,因爲它是此任務最合適的方法。 –

0

嘗試:

$arr = array(....); //your array 
//Removing '(', ')', ' ' and '-' from the array values. 
foreach($arr as $v) 
$v = str_replace(array(' ', '(', ')', '-'), '', $v); 
0
$search = array(' ', '-', '(', ')'); 
foreach($csv as &$line) { 
    $line[1] = str_replace($search, '', $line[1]); 
}