Экспорт в CSV, строка с запятой в нем, разбивает его - PullRequest
0 голосов
/ 12 июня 2010

Этот код экспортирует данные в CSV-файл, который открывается в Excel.

Если в строке есть запятая, она портит порядок данных.

Мне нужна помощь в изменении моего кода ниже, чтобы разрешить все строки, которые содержат запятую в нем, чтобы не создавать новый столбец до окончания строки.

Я предполагаю, что она пропустит каждую строку в двойных кавычках или что-то, что содержит строку, поэтому любая запятая в этих кавычках сделает исключение.

Любая помощь приветствуется.

$result = mysql_query("select lname, fname, email, dtelephone, etelephone, contactwhen, comments, thursday, 
friday, saturday, sunday, monday FROM volunteers_2010");

$csv_output .= "Last Name,First Name,Email,Telephone (Day),Telephone (Evening),Contact When,Comments,Thursday,Friday,Saturday,Sunday,Monday,Comments\n";

$i = 0;
if (mysql_num_rows($result) > 0) {
 while ($row = mysql_fetch_assoc($result)) {
  $csv_output .= $row['Field'].", ";
  $i++;
 }
}
$csv_output .= "\n";

$values = mysql_query("SELECT lname, fname, email, dtelephone, etelephone, contactwhen, comments, thursday, 
friday, saturday, sunday, monday FROM volunteers_2010 WHERE venue_id = $venue_id");

while ($rowr = mysql_fetch_row($values)) {
 for ($j=0;$j<$i;$j++) {
  $csv_output .= $rowr[$j].", ";
 }
 $csv_output .= "\n";
}

Ответы [ 3 ]

3 голосов
/ 12 июня 2010

см. Статью в википедии

Поля со встроенными запятыми должны быть заключены в двойные кавычки

3 голосов
/ 12 июня 2010
2 голосов
/ 13 июня 2010

Правильный формат: «тест», «тест», «использовать двойные» «кавычки внутри»

1-й цикл:

$csv_output .= '"' . str_replace('"', '""', $rowr['Field']) . '", ';

2-й цикл:

$csv_output .= '"' . str_replace('"', '""', $rowr[$j]) . '", ';
...