#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, прошло некоторое время с тех пор, как я работал над ним. Мир!