2016-11-21 13 views
1

DB에 저장해야하는 .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); 

그 날에 의해 분리 된 2 파일을 생성하고, 상기 최종 값이 새로운 라인에 \ r \ n을 수득

TXT 출력이 다음이다 : 공백을 포함

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

문자열 경우 "가"에 의해 저장되어, 내가 어떻게이 따옴표를 제거 할 수 있습니까? 또는 배열에서 인용문을이 열에서만 어떻게 바꿀 수 있습니까?

도움 주셔서 감사합니다.

편집

내가 두 단어 사이의 공간을 교체하는 경우, 따옴표가없는,하지만 난 문자열 사이의 공간이 필요하면 내가 무엇을 할 수 있습니까?

는 컨트롤러 :

$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; 

그러나 잘못이 난의/때문에, 그것은 (32) CHR하는, 따옴표가있을 것입니다.

모든 솔루션? 따옴표를 제거하는

답변

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), ';'); 

.... 대신 당신이 implode(";",$array);을 사용할 수 fputcsv(...)

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

답변 중 첫 번째 답변을 사용했지만 .txt에 아직 따옴표가 있습니다. –

+0

? '''Odd .. 아마도 여러분이 보았던 문자를 복사하여 str_ireplace ('X')에 붙여 넣으십시오. 표준 인용 부호 –

+0

이 복사되지는 않았지만 여전히 출력 TXT 파일에 있습니다 –

0

fputs(...)

csv php 함수가 특정 RC 표준을 따른다는 것을 기억하십시오. 지금은 할 수 없습니다. 나는 나중에 대답을 편집 할 것이다. 그래서 당신은 더 이상 표준을 따르지 않습니다.