2013-07-09 4 views
0

다음 내용은 파일의 내용을 순환하여 모든 빈 줄을 제거한 다음 비어있는 줄만 사용하여 파일을 다시 작성해야합니다. 파일에 쓰지 않고, 또는 라인을 되풀이하는 것만으로도 다른 것으로 바꿀 수 있습니다. 그러나 파일에 쓰려고 할 때 파일의 모든 내용이 지워집니다. 오류는 리턴되지 않습니다. 나는 스크립트의 새로운 실행 방식에 개방적이어서 어쨌든 내가 찾고있는 것을 성취 할 수있을 것이다. 미리 감사드립니다.파일에서 모든 빈 줄을 제거하십시오.

error_reporting(E_ALL); 
ini_set('display_errors', true); 

$filenameindex = "somefile"; 
$filecont = file($filenameindex); 
$fileindex = fopen($filenameindex, "w") or die("can't open file"); 
foreach($filecont as $line) 
{ 
    if(strlen($line) > 0) 
    { 
     fwrite($fileindex,$line);  
    } 
} 
fclose($fileindex); 

답변

0

이것은 PHP 솔루션이 아니지만 공백을 제거하는 것이 유일한 목표라면 어떻게 사용합니까? UNIX sed?

sed -i '/^$/d' /somewhere/somefile.txt 

당신은 shell_exec() 또는 역 따옴표와 PHP의에서이 호출 할 수 있습니다. 이것은 또한 유닉스 시스템을 사용하고 있다고 가정하고 있지만 파일을 PHP로로드하는 오버 헤드를 제거합니다.

+0

완벽하게 작동했습니다! 감사합니다. –

+0

좋습니다. 대답을 수락하면 다른 사람들에게 명확합니다. – calcinai

+0

죄송합니다. –

0

당신은 preg_replace이다

$filename = "somefile.txt"; 
$str = file_get_contents($filename); 
$str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\r\n", $str); 
file_put_contents($filename, $str); 

주를 사용하여이 작업을 수행 할 수 있습니다! 메모장에 줄 바꿈을 올바르게 표시하기 위해 "\ n"대신 "\ r \ n"을 사용했습니다.

+0

모든 콘텐츠를 동일한 줄로 이동시키고 이동 한 위치 사이에 마침표를 넣었습니다. 전에 preg_replace를 사용하려고했지만 제대로 작동하지 않을 수 있습니다 ... –

+0

오, 죄송합니다 .. 메모장에서 파일을여시겠습니까? 그렇다면 줄 바꿈에 "\ r \ n"을 사용해야합니다. preg_replace 줄은 다음과 같아야합니다. $ str = preg_replace ("/ (^ [\ r \ n] +) [\ s \ t] * [\ r \ n] +/","\ r \ n ", $ str); – Sph1nX

관련 문제