拆分字段的逗号分隔值

时间:2015-11-08 00:24:53

标签: php csv

我正在尝试为商店导入CSV,其中包含现有CSV文件中的数据子集。我需要从包含多个逗号分隔值的列(第3列,category_id)中拆分一个项目,然后将其与另一列(Product_id)合并,以在导入CSV中生成多个行。请参阅以下示例。

原始CSV

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

需要将其加入新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 个答案:

答案 0 :(得分: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;
        }
    }
}