为什么会有三句话出现在fopen,""";aaaa”"&”"""


why three quotation coming in fopen, """aaaa""","""bbb"""

这是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