当一个单元格包含Javascript代码时,无法使用fputcsv正确构建CSV
CSV not building properly with fputcsv when one cell includes Javascript code
我正试图使用fputcsv用php创建一个csv文件,其中一个单元格包含javascript代码。我遇到的问题是,保存javascript代码的单元格包含以下字符:
'|"''/,
每次我加载csv文件时都会破坏它。它将javascript代码中的逗号视为分隔符,因此将代码拆分为多个单元格。
我正在excel中查看csv文件。
我知道excel会用双引号封装字符串,例如短语:
乔说:"进展如何?"
将转换为
乔说:"怎么样?"?"
但是对于javascript代码,这种封装不起作用。
下面是一条需要进入csv:的违规javascript代码
document.body.innerHTML.toLowerCase().replace(/'s|'"|''/g, "");
上面js中的"导致了问题,g后面的逗号开始了一个新的单元格。
如果我执行str_replace(''"','', ** javascript code **);
,csv将正确生成。但我不允许更改任何js,只允许转义字符
有人能为这个问题提供任何解决方案吗?也许有一种方法可以在''"上执行str_replace,将其保存在js中,但正确地转义,以便excel在单元格中查看?
非常感谢
Joe
在此处检查:
$line=array();
for($x=0;$x<=3;$x++)
{
$line[$x]="Sample data".$x;
}
$line[4]= <<<EOT
document.body.innerHTML.toLowerCase().replace(/'s|'"|''/g, "");
EOT;
$fp = fopen('final.csv', 'w');
fputcsv($fp, $line);
fclose($fp);
final.csv:的内容
"Sample data0","Sample data1","Sample data2","Sample data3","document.body.innerHTML.toLowerCase().replace(/'s|'"|''/g, """");"
^^
使用HEREDOC,您可以将该行放入字符串中,并将其插入csv文件中。
但这不是一个解决方案,因为它在csv文件中插入了更多的引号,但可以帮助您获得真正的解决方案。
更多
echo $string."<br><br>";
$arr1 = str_split($string);
for($i=0;$i<count($arr1);$i++) {
if($arr1[$i]=='"' and $arr1[$i+1]=='|'){ $arr1[$i]='""';} //this will only work if "| are together
}
echo implode("", $arr1);
返回:
document.body.innerHTML.toLowerCase().replace(/'s|'"|''/g, "");
document.body.innerHTML.toLowerCase().replace(/'s|'""|''/g, "");
相关文章:
- 在POST中将html表作为csv提交
- 通过CSV文件上载更新数据库表
- 在.csv文件中写入学位符号
- PERL-下载CSV文件不完整
- 将CSV文件从URL导入Node.js
- Get方法获取csv文件的内容
- 如何将csv数据导入netsuite
- 将JSON转换为放入Sdcard中的CSV文件
- 将基本CSV数据加载到D3
- 在csv文件名中使用西班牙语字符
- 如何使用d3.js从csv文件中绘制areaplot?请任何人分享代码
- 正在以javascript读取本地csv文件
- d3.csv有很多数据,只画了一个月
- 处理字段中带有换行符的csv文件-node.js
- 编辑CSV数组中的项目-快速CSV node.js
- 无标题Javascript JSON数组->CSV导出
- 如何将CSV数据从变量下载到CSV文件
- Safari 5.1.7下载文件名未知的csv文件
- csv数据中的新数组
- 当一个单元格包含Javascript代码时,无法使用fputcsv正确构建CSV