phpparsingcsv

PHP CSV string to array


I'm trying to parse a CSV string to an array in PHP. The CSV string has the following attributes:

Delimiter: ,
Enclosure: "
New line: \r\n

Example content:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"

When I try to parse it like this:

$url = "http://www.url-to-feed.com";
$csv = file_get_contents($url);
$data = str_getcsv($csv);
var_dump($data);

The last and first element are concatenated in one string:

[0]=> string(5) "12345"
...
[7]=> string(4) "0.04"
[8]=> string(19) "27-05-2013
"12346""

How can I fix this? Any help would be appreciated.


Solution

  • Do this:

    $csvData = file_get_contents($fileName);
    $lines = explode(PHP_EOL, $csvData);
    $array = array();
    foreach ($lines as $line) {
        $array[] = str_getcsv($line);
    }
    print_r($array);
    

    It will give you an output like this:

    Array
    (
        [0] => Array
            (
                [0] => 12345
                [1] => Computers
                [2] => Acer
                [3] => 4
                [4] => Varta
                [5] => 5.93
                [6] => 1
                [7] => 0.04
                [8] => 27-05-2013
            )
    
        [1] => Array
            (
                [0] => 12346
                [1] => Computers
                [2] => Acer
                [3] => 5
                [4] => Decra
                [5] => 5.94
                [6] => 1
                [7] => 0.04
                [8] => 27-05-2013
            )
    
    )
    

    I hope this can be of some help.