我正在使用 fputcsv() 从数组数组中生成 csv。其中一个字段包含一个 html 代码片段,当我在 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
html$cache
代码片段作为字段值。
另外,我注意到的是,如果我不转义,
,字符串会跨越多个单元格。为此,我尝试过str_replace(",","\,",$string)
但没有用。
更新:问题在于引号和逗号都出现在字符串中的情况。例如考虑一个字符串I have "big" quesiton, that I want to know.
"I have "big" quesiton"
进入一个单元格并"that I want to know."
进入另一个单元格,而不是整个字符串出现在一列中。