IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer une ligne entière dans un fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut Supprimer une ligne entière dans un fichier
    Bonjour,

    J'utilise un fichier sur mon site internet.
    Je souhaite chercher un mot dans ce fichier, et s'il est trouvé, supprimer toute la ligne (et pas seulement l'occurence). La supprimer = La mettre en blanc. Pas utile de réellement la supprimer (je crois que c'est plus facile de tout mettre en blanc )

    Voici mon code pour le moment:

    Je cherche "hello". S'il n'existe pas, j'affiche "faux". Sinon, je veux supprimer la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
     
     
    if (preg_match("#hello#", file_get_contents("noms2.txt")))
     
    {
    		echo 'VRAI, on va donc le supprimer!';
    		$nouveaufichier = preg_replace('#\n[^\n]*hello[^\n]*\n#U', "", file_get_contents("noms2.txt"));
       	file_put_contents("noms2.txt", $nouveaufichier);
     
    }
    else
    {
        echo 'FAUX';
    }
    ?>
    Merci d'avance!

    D

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonsoir,

    Sans être expert va falloir que tu passes par deux fichiers ... ça sera plus simple car ton content sera en fin de fichier ... et si tes fichiers sont pas trop long, c la meilleur solution

    PS: je te propose cela en fonction de php
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Merci pour la réponse.

    Mais il me semblait justement qu'il fallait passer par deux fichiers si je ne voulais pas qu'apparaissent d'espaces blancs... or je m'en fiche

    Mais bon, à voir alors. j'aurai + vu une solution dans la formulation de ma regex; un truc qui dit "et n'importe quels caractères jusqu'à la fin de la ligne".

    je ne sais pas si ça existe :p

    merci encore!

    D

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    define('FICHIER', 'monfichier.txt');
     
    # Solution 1, une regex mais elle doit laisser le saut à la ligne situé à la fin de celle-ci :
    file_put_contents(FICHIER, preg_replace('~^.*hello.*$~m', '', file_get_contents(FICHIER)/*, 1*/));
     
    # Solution 2 (requiert PHP >= 5.3 à moins d'"externaliser" et nommer la fonction anonyme) :
    file_put_contents(FICHIER,
        implode(/*PHP_EOL,*/
            array_filter(
                file(FICHIER/*, FILE_IGNORE_NEW_LINES*/),
                function ($line) {
                    return strpos($line, 'hello') === FALSE;
                }
            )
        )
    );
    Les solutions ne doivent pas manquer ... Mais il n'y a qu'au plus une seule ligne à supprimer ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut


    génial!

    merci infiniment!

    David

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] Comment supprimer une ligne entiere dans excel
    Par babouoles dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/07/2017, 08h34
  2. Supprimer une ligne vide dans un fichier texte
    Par Tibà22 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/04/2011, 16h58
  3. supprimer une ligne spécifié dans un fichier
    Par ouadie99 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 15/03/2008, 15h25
  4. [MySQL] Supprimer une ligne afficher dans une base de donnée
    Par julienchpt dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 14/10/2005, 15h45
  5. Réponses: 6
    Dernier message: 04/03/2004, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo