анализ файлов CSV с экранированными символами в PHP - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь использовать электронную таблицу Документов Google в качестве базы данных для очень простого проекта, и я чувствую, что у меня есть рабочая версия, основанная на ответе yc на этот вопрос: использование Google Docs в качестве базы данных?

Моя проблема в том, что теперь я прибыл туда, где мне, возможно, нужно что-то сделать с побегами. Я не знаю, есть ли стандартная реализация для CSV или она отличается от программы к программе, но вот что делает Google Docs:

Если у меня есть следующие исходные данные (a, b, c, d, e означает 5 отдельных столбцов)

a     b     c     d1, d2, d3, d4     e1, e2, "e3, e4", e5, "e6"

Затем выдает следующую строку:

a,b,c,"d1, d2, d3, d4","e1, e2, ""e3, e4"", e5, ""e6"""

Насколько я понимаю, он оборачивает все поле в "поле", если он что-то находит, и экранирует "как" ". Может быть, нам просто нужно развернуть" "в" и развернуть поле из "поля" в поле .

Есть ли способ проанализировать эту версию CSV в PHP? Если это действительно сложно, у меня все еще есть идея, как заменить символы в Google Docs и опубликовать их на другом листе, но я надеюсь, что это можно решить с помощью простой функции PHP.

Альтернативное решение: может быть, гораздо проще просто извлечь XML в формате RSS или ATOM, но я не знаю, как анализировать эти форматы.

1 Ответ

0 голосов
/ 10 марта 2011

Использовать str_getcsv , используя саму цитату в качестве escape-символа, что-то вроде:

$array = str_getcsv($str, ',', '"', '"');

Если вы анализируете файл или сетевой поток, также рассмотрите возможность использования fgetcsv .

...