Forum d'entraide PHPFrance

Venez poser vos questions PHP, MySQL, HTML, CSS, Javascript, Gestion de serveurs à la communauté PHPfrance

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

Suppression ligne vide

Pour les initiés, les confirmés, les experts, les gourous... voire plus.

Suppression ligne vide

Messagepar Bisvan 13 Mai 2009, 15:41

Bonjour,

Je suis en train de travailler sur le reformatage d'un fichier .csv avec les fonctions de fichiers de PHP.
J'aimerai pouvoir supprimer dans mon script les lignes vides du fichier .csv...mais je ne trouve pas la solution.

Voici mon script :
Syntaxe: [ Télécharger ] [ Masquer ]
Code php

        $newfile="monfichier.csv";

        $creation = fopen($newfile, "a");

        // Boucle ouverture du fichier

        while (!feof($fp))

        {

                // On affichage chaque ligne du fichier

                $ligne  = fgets($fp,4096);

                // Formatage de chaque ligne en enlevant le blanc de fin de ligne

                $ligne2 = rtrim($ligne);

                if($ligne2!="")

                {

                fputs($creation, "$ligne2\r\n");

                }

        }

        fclose($fp);

        fclose($creation);

 


J'ai essayé de supprimer les lignes vides avec :
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
if($ligne2!="")

                {

                fputs($creation, "$ligne2\r\n");

                }
...mais cela ne marche pas :(

Une idée ?
Bisvan :)
Bisvan
Ma première boucle
 
Messages: 116
Inscription: 10 Mai 2006, 11:12
Localisation: Suisse

Messagepar Ryle 15 Mai 2009, 14:22

hmm... quand tu dis que "ça ne marche pas", qu'est ce qui ne fonctionne pas ? as-tu vérifié la valeur de $ligne2 sur les différentes lignes à exclure et à conserver ?

Ce n'est pas parce qu'une ligne ne contient pas de données dans excel, que celle-ci est vide dans le fichier csv... ouvre ton fichier csv avec un éditeur de texte (bloc note ou autre). Tu verras que les lignes qui apparaissent vides contiennent en fait tous les séparateurs de champs, chaque champ étant quant à lui vide :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...
Avatar de l’utilisateur
Ryle
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 9793
Inscription: 07 Fév 2006, 17:25
Localisation: Lat: 48°89. Long: 2°30.

Messagepar Bisvan 15 Mai 2009, 18:46

Oui c'est bien cela le problème.
j'ai des lignes dans mon CSV sans résultat que j'aimerai "faire disparaitre".
Or avec mon script ces lignes vide (sans résultat mais avec un saut de ligne) restent présentes.

Aurais tu une idée ?
Bisvan :)
Bisvan
Ma première boucle
 
Messages: 116
Inscription: 10 Mai 2006, 11:12
Localisation: Suisse

Messagepar Ryle 16 Mai 2009, 11:59

Ouvre ton fichier csv dans un bloc note pour voir à quoi il ressemble réellement... tu verras que tes lignes "vides" sont en fait une suite de point-virgules (séparateurs de champs)

Il ne te faut donc pas tester si ta ligne est vide avec php, mais si celle-ci ne contient que des ";", ce que tu peux faire assez simplement avec une expression régulière : #^;*$#. Si c'est le cas, tu pourras supprimer cette ligne, sinon tu la laisses :)

Mais commence par ouvrir ton fichier avec le bloc note pour voir à quoi il ressemble réellement. C'est important de voir le format des données que tu manipules, et ça te simplifieras la vie :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...
Avatar de l’utilisateur
Ryle
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 9793
Inscription: 07 Fév 2006, 17:25
Localisation: Lat: 48°89. Long: 2°30.

Messagepar Bisvan 16 Mai 2009, 12:49

En fait la ligne dont je parle est la dernière ligne de mon fichier CSV et elle ne comporte pas de ";".
Elle est simplement vide (le curseur peut se positionner dessus).
Comment la supprimer ?
Bisvan :)
Bisvan
Ma première boucle
 
Messages: 116
Inscription: 10 Mai 2006, 11:12
Localisation: Suisse

Messagepar Ryle 16 Mai 2009, 16:35

Au temps pour moi ! :)

Ta dernière ligne vide provient du dernier "\r\n" que tu mets dans ton fichier et qui du coup va créer une ligne vide tout à la fin. Pour éviter cela, il ne faut pas mettre le retour à la ligne systématiquement. Le plus simple est de le mettre en début de ligne à condition de ne pas être sur la première, ce que tu peux vérifier avec un compteur :

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
$cptLigne = 0;

while (!feof($fp))

    {

        // On affichage chaque ligne du fichier

        $ligne  = fgets($fp,4096);

        // Formatage de chaque ligne en enlevant le blanc de fin de ligne

        $ligne2 = rtrim($ligne);



        if ($cptLigne > 0) // si on est pas sur la première ligne, on créer une nouvelle ligne

            fputs($creation, "\r\n");



        fputs($creation, $ligne2); // on ajoute le contenu de la ligne



        $cptLigne++; // incrémente le compteur

    }
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...
Avatar de l’utilisateur
Ryle
Modérateur PHPfrance
Modérateur PHPfrance
 
Messages: 9793
Inscription: 07 Fév 2006, 17:25
Localisation: Lat: 48°89. Long: 2°30.

Messagepar psgkiki 19 Mai 2009, 19:18

Bonjour a tous,

Tu as réussi à supprimer une ligne blanche ? Moi j'aimerai tout simplement les supprimer dans un fichier texte.

Merci pour votre aide
psgkiki
Foetus
 
Messages: 24
Inscription: 19 Avr 2008, 12:30


Retourner vers PHP avancé

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités