функция php для преобразования csv с запятыми и другими символами форматирования - PullRequest
0 голосов
/ 05 июля 2011

Я загружаю свои данные из MySQL в .csv формат.У меня нет проблем с использованием mysql_real_escape_string(), но эта функция удаляет любые запятые или символы форматирования, которые существуют в моих данных. Таким образом, структура .csv сохраняется, но мои грамматические символы (такие как запятые) ожидаемо удаляются.

Ответы [ 3 ]

1 голос
/ 05 июля 2011

mysql_real_escape_string не удаляет данные.Это просто делает строку безопасной для вставки в запрос SQL.Стандартные правила для CSV - заключать любые строки, содержащие запятые в двойные кавычки, поэтому

This is my comma , containing string

становится

"This is my comma, containing string"

в выводе CSV.И любые поля, содержащие двойные кавычки, должны иметь двойные кавычки:

This is my "little" friend

становится

This is my ""little"" friend
0 голосов
/ 06 июля 2011

Я решил эту проблему, заключив всю строку в кавычки, а затем по отдельности заключив в кавычки и запятые, чтобы сохранить форматирование:

...
$csv_output .= "\"" . eregi_replace("\"", "\"\"", stripslashes($rowr[$j])) . "\",";
...

Вы заметите, что я странным образом применил полоски (). К сожалению, скрипт, над которым я работаю, работает только в php4, поэтому слэши добавляются по умолчанию в INI-настройках. Так что я просто раздеваю их.

Я также, вероятно, заменю eregi_replace () на str_replace (), так как считаю, что это устарело.

Так или иначе. Вышеупомянутое решение работает, чтобы удалить запятые и косые черты и поддерживает их, где

0 голосов
/ 05 июля 2011

Помещает в каждое поле двойные кавычки.

Функция для преобразования массива в CSV:

function arr2csv($twoDaray) {
   foreach($twoDarray as $k=>$v) {
      $row=implode('","',$v);
      echo '"'.$row.'"'.chr(10).chr(13);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...