【问题标题】:how to enclose csv headers' row in double quotes using PHP?如何使用 PHP 将 csv 标题行用双引号括起来?
【发布时间】:2014-11-23 10:05:49
【问题描述】:

假设我有

$headers = array(
"userid",
"fname",
"lname");

我希望它们作为标题行(csv 的最顶部)放置,用逗号分隔并用双引号括起来。

我已经试过了

$fp = fopen('data.csv', 'w+'); 
fputcsv($fp,$headers,',','"');
fclose($fp);

他们没有用双引号括起来..怎么做?

【问题讨论】:

  • 您粘贴的网址根本没有提供任何帮助
  • 因为这是不可能的。您是否尝试过手动添加引号,如下所示:array('"userid'" ...)
  • @ChenAsraf,如果我这样做,输出将类似于例如 """userid"""
  • 也尝试将 $enclosure 参数设置为空字符串,以不将其包含在“需要被包围”字符中

标签: php


【解决方案1】:

您可以尝试像这样强制它:

$headers = array(
    '"userid"',
    '"fname"',
    '"lname"'
);

通过将值包装在实际的引号中,然后只使用空白字符串:

$fp = fopen('data.csv', 'w+'); 
fputcsv($fp,$headers,',','');
fclose($fp);

强制它在“需要被包围”字符中排除引号(PHP 检查包围字符是否已经在字符串中,并在必要时转义+包围)。

但是,在新版本的 PHP 中,你会得到这个错误:

fputcsv(): enclosure must be a character

在这种情况下,我只建议自己做,像这样:

function put_csv_headers($handle, $headers, $separator, $enclosure) {
    // [add some error checks here, of course]
    array_walk($headers, function(&$item, $i, $enc) {
        $item = $enc . $item . $enc; // wrap the header with the enclosure
    }, $enclosure);
    fputs($handle, implode($separator, $headers));
}

还有:

$headers = array('userid', 'fname', 'lname');
$fp = fopen('data.csv', 'w+'); 
put_csv_headers($fp, $headers, ',', '"');
fclose($fp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2014-02-20
    • 2011-09-27
    • 2021-11-17
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多