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 :

Remplacer une ligne d'un fichier par une autre


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Remplacer une ligne d'un fichier par une autre
    Bonjour!

    Pour un projet j'ai besoins d'un code qui modifie une chaine de caractères d'une ligne d'un fichier .txt entrées en paramètre par une autre (en paramètre aussi).

    J'ai fait ce code :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
     
    if (!$fd = fopen("firewall.txt","r")) {
    echo "Echec de l'ouverture du fichier";
    exit;
    }
    if (!$fp_temp = fopen("tem.txt","w+")) {
    echo "Echec de l'ouverture du fichier temp";
    exit;
    }
     
    $acambiar = "iptables -I INPUT -p icmp --icmp-type echo-request -j DROP";
    $cambiado = "iptables -I INPUT -p icmp --icmp-type echo-request -j ALLOW";
     
        while (!feof($fd)) {
     
           $ligne = fgets($fd, 1024);
     
     
    		if ((trim($ligne)!=trim($acambiar))) {fwrite($fp_temp,$ligne);}
    		if ((trim($ligne)==trim($acambiar))) {
     
    		fwrite($fp_temp,$cambiado);
     
    		}
     
    	}
    	fclose($fd);
    	fclose($fp_temp);
     
    ?>
    Le problème est que la fonction fwrite ne passe pas de ligne et me colle la suite du texte juste après le texte que j'ai modifié...

    Quelqu'un pourrait me filer un coup de pouce svp ??

    merci infiniment !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut
    Salut, pour avoir ton retour à la ligne, il faut modifier la chaine de remplacement en y ajoutant à la fin un \r\n, qui précisera qu'il faut une nouvelle ligne avec un retour.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $acambiar = "iptables -I INPUT -p icmp --icmp-type echo-request -j DROP";
    $cambiado = "iptables -I INPUT -p icmp --icmp-type echo-request -j ALLOW\r\n";
     
    while( !feof($fd) )
    {
            $ligne = fgets( $fd, 1024 );
     
            if( trim($ligne) != trim($acambiar) )
                    fwrite( $fp_temp, $ligne );
            if( trim($ligne) == trim($acambiar) )
                    fwrite( $fp_temp, $cambiado );
    }

    Voilou.

  3. #3
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    A quoi sert le $i++ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     fwrite($fp_temp,$cambiado . "\n");
    ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'était un compteur pour compter les lignes, j'ai oublié de l'enlever, c'était pas important, je vais essayer comme ça tout de suite merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/02/2015, 10h34
  2. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  3. Réponses: 2
    Dernier message: 18/11/2013, 15h43
  4. Remplacer une ligne texte d'un fichier par une autre
    Par lecteur1001 dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/08/2011, 13h39
  5. Remplacer une ligne d'un fichier texte par une autre
    Par devalender dans le forum WinDev
    Réponses: 12
    Dernier message: 24/07/2007, 19h51

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