2017-04-18 7 views
0

Je crains que cette question ne soit pas trop populaire et peut-être être downvoted, mais j'ai cherché et cherché dans ce site (et d'autres aussi) et je ne trouve pas une solution.Supprimer les lignes vides du fichier txt en gardant les retours chariot

Je dispose d'un fichier texte avec, disons, ce contenu:

enter image description here

je dois supprimer les lignes vides, mais en gardant les retours chariot existants, comme celui-ci:

enter image description here

Le code que j'utilise:

if ($file = fopen("file.txt", "r")) { 
    while(!feof($file)) { 
     $line = fgets($file); 
     echo str_replace("\r\n","",$line) 
    } 
    fclose($file); 
} 

Comme indiqué ci-dessus, j'ai essayé avec des fonctions comme str_replace, preg_replace, et \ r \ n ou \ n \ n, etc. comme caractères à remplacer, mais avec tous ces résultats:

enter image description here

La ligne vide est supprimée comme souhaité, mais les retours chariot sont également supprimés, ce qui n'est pas autorisé dans mon cas.

Alors je me demande si quelqu'un pourrait suggérer un moyen d'atteindre mon objectif :) Merci.

+0

remplacer tous les 2 ou plusieurs sauts de ligne dans une ligne avec une seule – nogad

+0

cette aide de réponse? http://stackoverflow.com/questions/6360566/replace-multiple-newline-tab-space –

+0

Merci les gars, je vais essayer;) – b1919676

Répondre

0

Il y a forcément des doublons pour le remplacer, mais simplement lire dans un tableau et sauter les lignes vides:

$lines = file("file.txt", FILE_SKIP_EMPTY_LINES): 

boucle alors le tableau à echo les lignes ou implode() pour l'obtenir dans une chaîne .

+0

Merci mon pote, je vais l'essayer. – b1919676

-1

@Abracadaver @nogad @GCRdev

J'ai abeille essayer vos méthodes, mais ne fonctionne pas pour moi. J'ai finalement trouvé un moyen (grâce à https://stackoverflow.com/a/20719126), que je laisse ici si elle est utile pour quelqu'un:

$file = fopen("file.txt","r"); 
while($line = fgets($file)){ 

    $tempData = nl2br($line); 
    $tempData = explode("<br />",$tempData); 

    foreach ($tempData as $val) { 
     if(trim($val) != '') 
     { 
      echo $val."<br />"; 
     } 
    } 
} 
fclose($file);