【问题标题】:Export to csv, string w/ comma in it, splits it up导出到 csv,其中带有/逗号的字符串,将其拆分
【发布时间】:2011-03-03 01:48:28
【问题描述】:

此代码将数据导出到一个 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";
}

【问题讨论】:

  • 这样做了 $csv_output .= '"'.$row['Field'].'",';和 $csv_output .= '"'.$rowr[$j].'",';

标签: php csv export data-integrity


【解决方案1】:

see article in wikipedia

内嵌逗号的字段必须用双引号括起来

【讨论】:

    【解决方案2】:

    【讨论】:

    • +1 - 不要重新发明轮子,csv 是一种定义明确的格式,有许多正确的实现。
    • 不,它不是“定义明确的”,因为各种应用程序的格式各不相同,但大多数 CSV 程序都遵循一些常见模式 :-) 不一致的一个例子是 Microsoft Excel,至少在瑞典语言环境中,使用分号分隔字段(!)。不过,对于不重新发明轮子,仍然 +1。
    • 所以它应该看起来像: fputcsv(split(',',$row['Field']));和 fputcsv(split(',',$rowr[$j]));
    【解决方案3】:

    正确格式:“test”、“test”、“使用双引号”

    第一个循环:

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

    第二个循环:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2019-02-18
      相关资源
      最近更新 更多