2012-03-03 3 views
1

나는 PHP에 매우 익숙하다. 검색하고 텍스트를 CSV로 변환하고 파일에 출력 해보기 위해이 스크립트를 조합했다.파일에 출력하기

 $File = "/var/apache2/htdocs/loginS/host.txt"; 
     $Handle = fopen($File,"r"); 
     $Content = fread ($Handle,filesize ($File)); 
     fclose($File); 
     fclose($Handle); 
     $Content = explode("\t", $Content); 
     foreach($Content as $Value) { 
       //echo $Value."|"; // till this line working 
     fwrite($save, $Value); 
     fclose($save); 
     } 

문제는 파일에 쓸 때입니다. 나는 한 줄 밖에 없다. 내 실수는 뭐니?

답변

3

레코드를 쓰는 루프의 파일에서 fclose()을 호출하고 있습니다. fclose()은 파일 핸들을 닫아 더 이상 유효하지 않으므로 쓸 수 없습니다.

콘텐츠가 foreach()} 뒤에 fclose($save);으로 이동하십시오.

또한 fread()과 같은 효과가 있으므로 $Content = file_get_contents($File);으로 전화를 걸면 간단하게 처리 할 수 ​​있습니다. 또한 $File은 문자열 변수 일 뿐이므로 fclose()을 호출 할 필요가 없으므로 아무 것도 수행하지 않습니다. fclose()$Handle에 전화하여 올바르게 닫았습니다. 그러나 file_get_contents()을 사용하면 둘 모두에 대한 필요성이 제거됩니다. 필요한 파일은 작성한 파일뿐입니다.

다음은 파일의 각 행을 배열로 읽어 오는 file() 함수를 사용하는 예제입니다.

$file = '/var/apache2/htdocs/loginS/host.txt'; 
$content = file($file); 

$save = fopen('./out.csv', 'w+'); 

foreach($content as $line) { 
    $line = rtrim($line, "\r\n"); // remove the newline from $line 
    $parts = explode("\t", $line); 

    $lineCsv = implode('|', $parts); // or ',' ? 
    fwrite($save, $lineCsv . "\n"); // write output to file 
} 

fclose($save); 
+0

대단히 감사합니다! – user1212143