Reputation: 165
I have a CSV file with the following format:
"1512";"Wreaths";"";"1493";"1";"0";"2"
"1513";"Wrist Rests";"";"1494";"1";"0";"2"
"1514";"Wrist Watches";"";"1495";"1";"0";"2"
"1515";"Writing";"";"1496";"1";"0";"2"
"1516";"Writing, Research & Publishing Guides";"";"1497";"1";"0";"2"
"1517";"xD-Picture Cards";"";"1498";"1";"0";"2"
"1518";"Yogurt Makers";"";"1499";"1";"0";"2"
"1519";"Yucatan Peninsula";"";"1500";"1";"0";"2"
"1520";"Zip Discs";"";"1501";"1";"0";"2"
"1521";"Zurnas";"";"1502";"1";"0";"2"
Every record is on a different line and I would like to read it using PHP to import it to my database. Here is my code, which doesn't print out anything at all.
<?php
$file = fopen("all_cats.csv", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
{
$line = fgets($file);
$json = json_decode($line, true);
$json[0];
}
fclose($file);
Please let me know what you think and what I should do to get this to work.
Upvotes: 1
Views: 52
Reputation: 4207
As mentioned in comments, you need to use fgetcsv
, with the delimeter ;
as per file/data
<?php
$file = fopen("all_cats.csv", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
echo '<pre>';
while(!feof($file))
{
$line = fgetcsv($file, 0, ';');
print_r($line);
}
fclose($file);
Upvotes: 2
Reputation: 1972
Use the fgetcsv function: http://php.net/manual/en/function.fgetcsv.php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num Felder in Zeile $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
Upvotes: 1