2015-11-08 185 views
1

我試圖從一個現有的CSV文件導入一個商店的CSV數據子集。我需要拆分包含多個逗號分隔值的列(第3列,category_id)中的一個項目,然後將其與另一列(Product_id)合併以在導入CSV中生成多行。請參閱以下示例。拆分字段的逗號分隔值

原始CSV

​​

需要它變成一個新的CSV文件

Product_id;category_id  
"1";"2"  
"1","4"  
"1","6" 

我想只是fegetcsv功能的CSV閱讀和整個打印輸出到一個數組但我不知道下一步該怎麼做。

<?php 
$handle = fopen ("articles.csv","r"); 
while (($data = fgetcsv ($handle, 1000, ";")) !== FALSE) { 
$column3[] = $data[3]; 
} 
fclose ($handle); 
//edit: 
print_r($column3); 
?> 

我得到:

Array ([0] => category_id [1] => 1 [2] => 0001 [3] => 2,4,6 
+1

有你想這樣做PHP中的具體原因是什麼?這是一次性的事情嗎? – davejal

+0

爲客戶做一個自動化的導入解決方案/ cronjob –

回答

2

快速和骯髒的:

$csvData = file('articles.csv'); 
$matches = array(); 
$output = ""; 
foreach($csvData as $csvLine) { 
    if(preg_match('/"(.+)";".+";"(.+)"/', $csvLine, $matches)) 
    { 
     $numbers = explode(',', $matches[2]); 
     foreach($numbers as $number) { 
      $output .= "\"{$matches[1]}\";\"{$number}\"" . PHP_EOL; 
     } 
    } 
} 
+0

嗨,謝謝anwser,但是輸出應該將輸出的第二個字段分成3個新行。 –

+0

啊對不起誤讀,會更新我的答案。 – MiDri

+0

我想我需要爆炸爲這個或東西提取價值成分離線 –