删除"来自数组

时间:2016-11-21 15:29:56

标签: php mysql laravel fputcsv

我有一个HTML表单,我需要将其存储在DB中,然后将其写入.csv和.txt。一切都运作良好,除了txt输出给我一些不好的字符串。

fputcsv功能:

private function fputcsv_custom1($fp, $array, $eol)
{
  fputcsv($fp, $array, ';');
  if ("\r\n" != $eol && fseek($fp, -1, SEEK_CUR) === 0) 
  { fwrite($fp, $eol . "\r\n"); }
}

控制器:

$peoples = OnlineSz::all()->toArray();

$file = fopen("online_hotel.csv", "w+");
$file1 = fopen("online_hotel.txt", "w+");

array_keys($peoples);

foreach ($peoples as $key => $array) {
  $this->fputcsv_custom($file, $array, ';');
  $this->fputcsv_custom1($file1, $array, ';');
}
fclose($file);
fclose($file1);

它生成了我的2个文件,由...分隔;最后一个值为\ r \ n提供新行。

txt输出是下一个:

53;"New test";Worker;test;test;4000;test;test;06123456789;test;0;0;CC;;0;0;

如果字符串包含空格,则由"存储。 " ,我怎么能删除这个引号?或者我如何才能从数组中仅替换此列的引号?

感谢您的帮助!

修改

如果我替换2个单词之间的空格,则引号不存在,但如果我需要字符串之间的空格,我该怎么办?

控制器:

$this->fputcsv_custom($file4, str_ireplace(chr(32), '/',$user), ';');
$this->fputcsv_custom1($file5, str_ireplace(chr(32), '/',$user), ';');

输出:

53;New/test;Alkalmazott;test;test;4000;test;test;06123456789;0;0;CC;0;0;

但是我错了,因为/,如果我把它替换为chr(32),引号就会出现。

任何解决方案?

2 个答案:

答案 0 :(得分:0)

使用str_ireplace删除引号....

$var  = str_ireplace('"', '', $var); //strip quotes from $var



 $this->fputcsv_custom($file, str_ireplace('"', '',$array), ';');
 $this->fputcsv_custom1($file1, str_ireplace('"', '',$array), ';');

您可能还想修剪尾随空格....

 $this->fputcsv_custom($file, trim(str_ireplace('"', '',$array)), ';');
 $this->fputcsv_custom1($file1, trim(str_ireplace('"', '',$array)), ';');

答案 1 :(得分:0)

您可以使用fputcsv(...)implode(";",$array);

代替fputs(...)

但请记住csv php函数遵循某个RC标准,我现在不能google。我稍后会编辑答案。所以你不再遵守这个标准了。