在PHP中将CSV写入没有机箱的文件

Der*_*lds 48 php csv quotes quoting

是否有本机函数或实体类/库,用于将数组作为一行写入没有机箱的CSV文件中?如果机箱参数没有传入任何内容,则fputcsv默认为".谷歌让我失望(返回大量网页的结果fputcsv),而PEAR的图书馆或多或少地做了相同的事情fputcsv.

一些完全相同的东西fputcsv,但会让字段保持不带引号.

目前: "field 1","field 2",field3hasNoSpaces

期望: field 1,field 2,field3hasNoSpaces

oop*_*ops 58

有关上述附件的警告是有效的,但您已经说过它们不适用于您的用例.

我想知道为什么你不能只使用这样的东西?

<?php
$fields = array(
    "field 1","field 2","field3hasNoSpaces"
);
fputs(STDOUT, implode($fields, ',')."\n");
Run Code Online (Sandbox Code Playgroud)

  • 这是替换没有机箱的fputcsv的最佳方法.我会提出一个小建议来改进这个答案 - 使用[implode]的文档参数顺序(http://php.net/manual/en/function.implode.php):`implode(string $ glue,array $ pieces) `避免与刚接触PHP的人混淆,并且不知道反向论证的这个PHP"特征". (5认同)
  • 不知道为什么我不先去这个。谢谢! (2认同)
  • 因为 CSV 库可以处理您的简单内爆解决方案无法处理的情况,例如对分隔符(在您的情况下为`,`)进行转义。 (2认同)

Mic*_*net 14

适用于chr()函数:

fputcsv($f,$array,',',chr(0));
Run Code Online (Sandbox Code Playgroud)

  • 我怀疑这是个好主意.你实际上是在写一个"\ 0"`.在它回来咬你之前,它几乎是看不见的. (10认同)
  • 似乎在UTF-8文件中无法正常工作 (4认同)
  • chr(0)创建null字符,显示在utf8中,如^ @ (4认同)

小智 7

fputcsv($file, $data, ';', chr(127));

  • 实际上, chr(127) 仍然显示为文件中的字符,因此并不理想。该死 (5认同)