@Suicide676
didusdev.com

Как правильно парсить кривой csv-файл?

Доброго времени суток.

Есть задание, одним пунктом из которого является вывод данных из csv-файла в таблицу.
Но проблема в том, что разделителем является " , " - запятая, и эта же запятая встречается внутри ячейки.
Из-за этого одна ячейка разбивается на 2, а так быть не должно.

Скачать csv

Как решить проблему?

Мой код:
<?php
	$path = '/upload/file_csv.csv';
	$csv = file_get_contents($path, "r"); 	
	
	$arCsv = explode("\n", $csv); 		
	
	foreach ($arCsv as $key => $value){
		$arCsvFinal[] = explode (",", $value);
	}
	
	echo '<table border="1">';
		foreach ($arCsvFinal as $key => $value){
			echo "<tr>";
				foreach ($value as $key2 => $value2){
					echo "<td>";
						echo $value2;
					echo "</td>";
				}
			echo "</tr>";
		}
	echo "</table>";
	
	//var_dump($arCsvFinal);
	
?>


Второй вариант:
$path = '/upload/file_csv.csv';
	
	$csv = fopen($path, "r");
	
	$arCsv = fgetcsv ( $csv,  $delimiter = ",");
	
	var_dump($arCsv);


тоже не годится, ибо отображеат только первые 8 значений.
  • Вопрос задан
  • 809 просмотров
Пригласить эксперта
Ответы на вопрос 1
chlp
@chlp
фулстек
CSV-файл не кривой, GOOGLE его прекрасно открывает.
В "сыром" виде в CSV-файле запятая по тексту оказывается внутри двойных кавычек. Если очень хочется парсить самому, то учитывайте двойные кавычки, причем не экранированные обратным слешем. Если нет, то воспользуйтесь уже написанным функционалом php.net/manual/ru/function.fgetcsv.php.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы