【问题标题】:php including a htmlcode snippet as a single field in a CSV using fputcsvphp 使用 fputcsv 将 htmlcode 片段作为单个字段包含在 CSV 中
【发布时间】:2013-02-18 10:33:56
【问题描述】:

我正在使用 fputcsv() 从数组数组生成 csv。其中一个字段包含一个 html 代码 sn-p,当我在 Excel 中打开它时会导致问题。

在 excel 中打开时,它会跨越多个单元格。

请注意,在 fputcsv 中,我使用 , 作为分隔符," 作为封闭元素。

我仍然可以看到 html 字符串在多个单元格中被破坏,这是由于 htmlcontent 中的逗号而发生的。

那么,我怎样才能准确地避开内嵌的逗号?

暂时,我确实用空格替换了逗号。但是,当在 MS Excel 中打开时,我仍然看到一个长的 htmlcode(大约 53823 个字符)跨越多个单元格。 Excel中单个单元格可以包含的字符数有上限吗?

请注意,当我在 Notepad++ 中打开我的 csv 时,它显示 CSV 格式正确,中间没有任何中断。但是,我的客户使用 MS Excel,很难让他相信 CSV 实际上格式正确。请帮忙。

这是我一直在使用的代码:

//escape the newline characters
$template = str_replace(array("\r\n", "\n", "\r", "\t"), '', $template);
$cache = str_replace(array("\r\n", "\n", "\r", "\t"), '', $cache);

$fh = fopen('abc.csv', 'a');
fputcsv($fh,array($template,$cache),',','"');

$template$cache 将 html 代码 sn-p 作为字段值。

另外,我注意到,如果我不转义 , ,则字符串会跨越多个单元格。为此,我尝试了str_replace(",","\,",$string),但没有用。

更新:问题在于引号和逗号都出现在字符串中的情况。 例如考虑一个字符串I have "big" quesiton, that I want to know.

"I have "big" quesiton" 出现在一个单元格中,"that I want to know." 出现在另一个单元格中,而不是整个字符串出现在一列中。

【问题讨论】:

  • 你能显示你的代码吗??
  • 您的 HTML 是否包含双引号 (")?如果是这样,您应该使用反斜杠 (\) 转义它们
  • 进行了快速搜索,似乎 fputcsv 实际上为您进行了转义。 stackoverflow.com/questions/6325613/escaping-for-csv 所以你需要发布代码才能进一步解决这个问题。
  • 在 PHP 5.3.10 下用fputcsv 测试了一个简短的 HTML sn-p,并用 Excel 2003 打开,它工作正常。尝试将您可疑的长 HTML 代码缩减为更短的代码以进行测试。

标签: php excel csv fputcsv


【解决方案1】:

最好使用 Eli Dickinson 的免费 PHP excel 导出器类,开始使用它时我重生了,现在在客户端生成和打开文件时没有任何问题。链接在这里: http://github.com/elidickinson/php-export-data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2012-11-02
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多