这是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"中用三个引号代替一个吗。
因为要转换的字符串中有引号。CSV文件中的引号通过加倍进行转义,即"abc"
变为""abc""
。第三个引号是包装字符串的"普通"CSV引号。
您不需要自己为fputcsv()
提供报价,所以您可以只使用array( 'aaa', 'bbb' )
。
这是一种在字符串中包含双引号的方法——如果你只写双引号,它会终止字符串,所以你必须以某种方式转义它。这里选择的逃离它的特殊机制是写入""
。
因为双引号在CSV中很特殊;示例字符串包含双引号,fputcsv
通过将双引号加倍对其进行转义,并且由于字符串包含转义引号,因此必须将其封装在另一对双引号中。这与fopen
无关,只是CSV的工作方式。
将前臂改为以下样子:
foreach ($list as $fields) {
foreach ($fields as $item) {
fput($fp, $fields . ",");
}
}
希望能有所帮助。
在第三个数组中有一个正在转义的引号:
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,"超级","豪华","卡车"
http://en.wikipedia.org/wiki/Comma-separated_values