2013-04-22 2 views
0

진공 선을 삭제하려고합니다. 내 스크립트, 라인을 검색, 그녀를 삭제하지만, 그것은 진공 라인 남아있다.PHP가 포함 된 text.txt의 진공/빈 줄 삭제

hello 
dude 
world 

나는이 스크립트했다 :

$chaine="dude"; 
$file=$filename; 
$texte = file_get_contents($file); 
$texte = str_replace($chaine ,'',$texte); 
$texte = preg_replace('/\s+/s', "\n", $texte); 

try 
    { 

     if(!$fd = fopen($filename, "w")){ 
      throw new Exception("Erreur ouverture du fichier"); 
     } 
    else 
    { 
     fwrite($fd, $texte); 

     /*On ferme le fichier*/ 
     fclose($fd);  
    } 

    } 

    catch (Exception $e) { 
     echo "Error de parametre fichier introuvable (File: ".$e->getFile().", line ". 
     $e->getLine()."): ".$e->getMessage(); 
     echo "\n"; 
    } 

을 그리고

hello 
world 

을하지만 첫 번째를 삭제하는 경우 :

(vacuum line) 
world 
: 안녕하세요, 진공 라인을 가지고

어떻게 문제를 해결할 수 있습니까?

나는 트림 않는 str_replace를 시도하지만 그건 작동하지 않습니다 ...

+0

'$ texte = preg_replace ('/ ^'. preg_quote ($ chaine, '/ ').[[rrn]+/', '', $ texte); ' – DaveRandom

+0

첫 번째 줄 중 하나만 작동합니다. . $ chaine = world 인 경우 작동하지 않습니다. – mpgn

+0

'[\ r \ n] +'을'(? : [\ r \ n] + | $)로 변경하십시오 ' – DaveRandom

답변

1

이 교체 :이와

$texte = str_replace($chaine ,'',$texte); 
$texte = preg_replace('/\s+/s', "\n", $texte); 

을 :

$texte = preg_replace('#' . $chaine . '\s*#', "\r", $texte); 

나는 방법 바꿈을 모르는 "\ r", "\ n"또는 "\ r \ n"을 대체 문자열로 사용하십시오.

+0

편집을 시도하십시오. – silkfire

+0

완벽하게 작동합니다! 고마워 ! :)의 사용은 무엇입니까? '#'줄에? – mpgn

+0

정규식 구분 기호입니다. 정규식 문자열의 시작과 끝 부분에 있어야합니다. '%','#','¤','~','^'또는'/'와 같은 이상한 문자가 될 수 있습니다. – silkfire