Как РАЗНЕСТИ строку CSV по значению с запятой?

#php #csv #explode

#php #csv #разнести

Вопрос:

 "AMZN","Amazon.com, Inc.",211.22,"11/9/2011","4:00pm","-6.77 - -3.11%",4673052
  

Amazon.com , Inc. обрабатывается как 2 значения вместо одного.

Я пробовал это $data = explode( ',', $s);

Как мне изменить это, чтобы избежать проблемы с запятой в значении?

Комментарии:

1. Возможно, вы ищете php.net/manual/en/function.str-getcsv.php (Однако, это только PHP> = 5.3)

2. @Pekka : В выходных данных, когда я разделяю возвращаемые значения и печатаю каждое значение в отдельной строке.

3. @Galled : Не все значения заключены в кавычки. Например: 211.22 не заключен в кавычки.

4. @ScottMcGready Пожалуйста, не исправляйте только одну вещь в сообщении при редактировании. Исправьте все (грамматику, форматирование, теги и т.д.).

5. У @hichris123 есть немного времени, чтобы убить, и я не хочу слишком увязать. Подумал, что я бы немного подчистил, пока ждал, но справедливо

Ответ №1:

Вероятно, вам следует заглянуть в str_getcsv() (или fgetcsv(), если вы загружаете CSV из файла)

Это позволит считывать содержимое CSV в массив без необходимости разнесения и т.д.

Редактировать — чтобы развить мысль, высказанную Пеккой, если вы используете PHP < 5.3 str_getcsv() , это не сработает, но здесь есть интересный подход, который воспроизводит функциональность для меньших версий. И еще один подход, здесь который используется fgetcsv() после создания временного файла.

Ответ №2:

Используйте специальную библиотеку CSV. Снова и снова объяснялось, что разбор форматов файлов, таких как CSV, вручную вызывает проблемы, потому что вы не знаете всех вариантов CSV и всех правил, чтобы сделать это правильно.

Комментарии:

1. Извините, немного подзабыл PHP, прошло некоторое время с тех пор, как я работал над ним. Мир!