Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2007, 03h06   #1
Invité de passage
 
Inscription : mars 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 10
Points : 1
Points : 1
Envoyer un message via MSN à vincent02
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 :
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
Type de fichier : txt firewall.txt (2,5 Ko, 4 affichages)
vincent02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2007, 09h07   #2
Membre du Club
 
Inscription : mai 2007
Messages : 60
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 60
Points : 46
Points : 46
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 :
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.
goulmak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2007, 19h50   #3
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
A quoi sert le $i++ ?

Code :
1
2
 
 fwrite($fp_temp,$cambiado . "\n");
?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2007, 20h19   #4
Invité de passage
 
Inscription : mars 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 10
Points : 1
Points : 1
Envoyer un message via MSN à vincent02
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
vincent02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h05.


 
 
 
 
Partenaires

Hébergement Web