php使用fputcsv将htmlcode片段作为CSV中的单个字段

时间:2013-02-18 10:33:57

标签: php excel csv fputcsv

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

在excel中打开时,它会突破多个单元格。

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

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

那么,我怎样才能完全摆脱隐藏的逗号?

目前,我确实用空格替换了逗号。但是,当我在MS Excel中打开时,我仍然看到一个长的htmlcode(nearabout 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代码段作为字段值。

另外,我注意到的是,如果我没有逃脱,,则字符串会断开多个单元格。为此,我尝试str_replace(",","\,",$string),但没有用。

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

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

1 个答案:

答案 0 :(得分:0)

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