2016-11-21 62 views
1

我有一个HTML表单,我需要存储在数据库中,然后将它写入.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 = OnlineSzallas::all()->toArray(); 

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

array_keys($peoples); 

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

它生成箱文件,该文件由分离;和最后一个值给一个\ r \ n至新行

的TXT输出是下一个:

53;"Ujabb teszt";Alkalmazott;teszt;teszt;4000;teszt;teszt;06123456789;test;0;0;Átutalás;;0;0; 

如果字符串包含空格,它是由“”存储,如何删除这个报价?或者我怎样才能从数组中替换引号只有这一列?

感谢您的帮助!

编辑

如果我更换2字之​​间的空间,引号是不存在的,但我能做些什么,如果我需要的串之间的空间?

控制器:

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

输出:

53;Ujabb/teszt;Alkalmazott;teszt;teszt;4000;teszt;teszt;06123456789;0;0;Átutalás;0;0; 

但这个我错了,因为/,如果我更换,以CHR(32),该报价将在那里。

任何解决方案?

回答

1

使用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)), ';'); 
+0

我已经使用了第一个答案,但在.txt中,引号仍然存在.. –

+0

? '''奇怪..也许复制你看到的字符并将其粘贴到str_ireplace('X')复制它可能不是一个标准报价 –

+0

,但仍然存在输出TXT文件 –

0

相反的fputcsv(...)你可以使用implode(";",$array);fputs(...)

但请记住,csv的php功能遵循一定的RC标准,我现在不能谷歌。稍后我会编辑答案。所以你不再遵循标准。