На эту тему уже есть несколько вопросов, но я не нашел удовлетворительного ответа. В то время как обычное программное обеспечение для чтения .csv (например, Libre Office) может читать файл без каких-либо проблем, PHP имеет проблемы с этим.
Примерная часть файла:
86010800,class,Table Games,,"(10005183, 10005184, 10005185)"86011100,class,Toy Vehicles – Non-ride,,"(10005192, 10005190, 10005191, 10005193, 10005194, 10005195, 10005196)"86011000,class,Toys – Ride-on,,"(10005187, 10005188, 10005441, 10005189)"86010900,class,Toys/Games Variety Packs,,(10005186)
10001686,brick,Airbrushes (Powered),"Definition:
Includes any products that can be described/observed as a powered
machine that scatters paint using air pressure and which is used for
design illustrations, fine art and delicate fine spray applications. The
machine comprises of a compression or propulsion device to scatter the
paint.Specifically excludes Spray Paint and Aerosols.Excludes Airbrushing Replacement Parts and Accessories such as Airbrush Control Valves and Airbrush Hoses.",()
10001688,brick,Airbrushing Equipment – Replacement Parts/Accessories,Definition: Includes any products that can be described/observed as a replacement part/accessory for airbrushing equipment.Includes products such as Airbrush Control Valves and Airbrush Hoses.Excludes products such as complete Airbrushes.,(20001349)
10001690,brick,Airbrushing Supplies Other,"Definition:
Includes any products that may be described/observed as Airbrushing
Supplies products, where the user of the schema is not able to classify
the products in existing bricks within the schema.Excludes all currently classified Airbrushing Supplies.",()
Как видите, столбец 4 и столбец 5 частично заключены в кавычки, поскольку они могут содержать разрывы строк, простые значения не заключаются в кавычки.
То, что я хочу, — это двухмерный массив, где строка — это уровень 1, а пять столбцов — это уровень 2.
я пытался
fgetcsv ()
который не разбирает многострочные поля и
str_getcsv ()
который не разбирает в двух измерениях оба с правильными параметрами. Как правильно проанализировать этот .csv-файл с помощью PHP?
Надеюсь, что SplFileObject :: fgetcsv () поможет вам разобрать файл CSV. В приведенной ниже ссылке пример уже приведен, поэтому используйте его и проверьте, правильно ли он выбирается или нет.
http://php.net/manual/en/splfileobject.fgetcsv.php
Изменить: Полный пример кода
$file = new SplFileObject('../../temp/file.csv');
$ar = array();
while (!$file->eof()) {
array_push($ar,$file->fgetcsv());
}
echo '<pre>';
print_r($ar);
echo '</pre>';
die;
Других решений пока нет …