这是fopen
的一个例子<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
它的输出是
aaa,bbb,ccc,dddd
123,456,789
"""aaaa""","""bbb"""
任何人都可以说我为什么在“”“aaaa”“”,“”“bbb”“”为什么三个引用代替一个。
答案 0 :(得分:2)
因为您要转换的字符串中包含引号。报价通过加倍转换为CSV文件,即"abc"
变为""abc""
。第三个引号是包装字符串的“普通”CSV引号。
您无需自行为fputcsv()
提供引号,因此您只需使用array( 'aaa', 'bbb' )
。
答案 1 :(得分:0)
这是一种在字符串中包含双引号的方法 - 如果你只是写双引号,它将终止字符串,所以你必须以某种方式逃避它。选择在此处转义的特定机制是编写""
。
答案 2 :(得分:0)
因为双引号在CSV中是特殊的;示例字符串包含双引号,fputcsv
通过将它们加倍来转义,并且因为字符串包含转义引号,所以它必须用另一对双引号括起来。这与fopen
无关,而是CSV的工作方式。
答案 3 :(得分:0)
将您的foreach更改为:
foreach ($list as $fields) {
foreach ($fields as $item) {
fput($fp, $fields . ",");
}
}
希望有所帮助。
答案 4 :(得分:0)
在第三个数组中有报价被转义:
array('"aaaa"', '"bbb"')
在您拥有的CSV中:
"""aaaa""","""bbb"""
Fields with embedded double-quote characters must be quoted, and each of the embedded double-quote characters must be represented by a
一对双引号字符。
1997年,福特,E350,“超级”,“豪华”“卡车”