使用 fputcsv 时避免使用 csv 文件中的默认引号
使用 fputcsv 避免 csv 中的默认引号
fputcsv($fp, $array, ',', '"'); // OR fputcsv($fp, $array);
测试中.csv
testname,045645765789,"""04.07.2012 12:10:52"""
如何避免上面的报价在这里?
如下图所示
testname,045645765789,04.07.2012 12:10:52
使用 fputcsv 避免 csv 中的默认引号
fputcsv($fp, $array, ',', '"'); // OR fputcsv($fp, $array);
测试中.csv
testname,045645765789,"""04.07.2012 12:10:52"""
如何避免上面的报价在这里?
如下图所示
testname,045645765789,04.07.2012 12:10:52
两个双引号用于转义双引号,因此看起来您的日期/时间已经被引用了。如果您只想获得正确引用的CSV,则可以尝试删除任何现有的双引号(这可能有点蛮力):
$array = array('testname',045645765789,'"04.07.2012 12:10:52"');
$array = str_replace('"', '', $array);
fputcsv($fp, $array);
// Output: testname,79323055,"04.07.2012 12:10:52"
想要在带有空格的字符串周围放置一些东西,所以如果你根本不想要引号,你要么需要解决,要么创建自己的函数来做你想做的事情。这个问题下有很多好的解决方案(编辑:这是一个不同的链接)。或者,在PHP手册的注释中还有许多其他解决方案。fputcsv
根据第一个链接,您可以执行以下操作:
$array = array('testname',045645765789,'"04.07.2012 12:10:52"');
$array = str_replace('"', '', $array);
fputs($fp, implode(',', $array)."\n");
// Output: testname,79323055,04.07.2012 12:10:52
我知道这是一个老问题,但我遇到了类似的问题,最终放弃了,只是用正确的标题来告诉浏览器下载文件。我知道这并不能专门解决这个问题,但考虑到我花了很多时间在上面,并意识到空间问题没有解决方案(除了可能的情况下,可能比问题应得的更多的工作之外),我选择了最简单的解决方案。如果目标是创建一个动态的,可下载的CSV文件,那么下面的代码可以非常轻松灵活地完成任务。我的问题是,我需要按照我正在使用的服务的要求将所有字段括在双引号中。但是有些字段有空格,这意味着会自动添加单引号(或双引号),这意味着我得到了这样的值。无论我尝试什么,它都不会正确输出数据。所以这解决了它(但是,它不使用,但我认为没有必要,因为结果是一样的):fputcsv
echo
fputcsv
fputcsv
"'this is a value'"
fputcsv
$filename="my_file.csv";
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=$filename");
for ($i=0; $i<=10; $i++) {
$value1 = "Here is some value";
$value2 = "Here is another value";
$value3 = "Another value";
echo $value1 . ",";
echo $value2 . ",";
echo $value3;
if ($i != 10) echo "\n"; //only add new line if it's not the last line
}
如果需要,您也可以选择将值括在双引号中,就像我通过执行如下操作所做的那样:
for ($i=0; $i<=10; $i++) {
$value1 = "Here is some value";
$value2 = "Here is another value";
$value3 = "Another value";
echo '"'. $value1 . "\",";
echo '"'. $value2 . "\",";
echo '"'. $value3 . "\"";
if ($i != 10) echo "\n"; //only add new line if it's not the last line
}
希望这可以节省某人的时间,如果他们遇到这个特定的格式问题。