Remplacer ou supprimer une chaîne de caratères dans un fichi

Eléphant du PHP | 355 Messages

04 déc. 2005, 22:02

Bonjour à tous :wink:

Je voudrai créer un script pour remplacer ou supprimer une chaîne de caratères dans un fichier.txt, quelqu'un saurait-il m'aider ?

Eléphant du PHP | 383 Messages

05 déc. 2005, 02:01

- tu ouvres le fichier en mode 'w+'
- tu lis le contenu du fichier
- tu utilises str_replace ou preg_replace pour faire les manips que tu veux
- tu ecris le resultat dans le fichier
- tu ferme, et c'est fini :-)

c'est ce qu'il te fallait ?

Eléphant du PHP | 355 Messages

05 déc. 2005, 02:37

Bonjour jobherzt et merci beaucoup :wink:

Cela doit surement être se qu'il me faut, mais je ne sai spas comment utiliser str_replace ou preg_replace, pouriez vous me donnner un exemple ?

Eléphant du PHP | 355 Messages

05 déc. 2005, 02:48

J'ai déjà un petit souci:

Je vien d'essayer d'ouvrir un fichier avec ce code:
$fp = fopen ("fichier.txt", "r+")
La rien ne se passe, et avec sa:
$fp = fopen ("fichier.txt", "w+")
Le fichier.txt est completement vidé.

Eléphant du PHP | 383 Messages

05 déc. 2005, 03:06

oops, exact, en le mettant n mode w+, je pensais surtout au fait que ca ecraserait le fihcier, mais j'avais zappe que ca l'ecraserait avant que tu n'ai pu le lire. donc je pense qu'il faut le faire en 2 etapes.

- d'abord ouvir en mode r
- lire le fichier avec http://de.php.net/manual/fr/function.fi ... ntents.php
- fermer le fichier
- faire les remplacements
- ouvir le fichier en mode w ( ecrasera le fichier original
- ecrire le reultat des remplacements avec http://de.php.net/manual/fr/function.fwrite.php
- fermer le fichier.

pour les focntions de remplacement :

- soit le ou les mots a remplacer sont entierement defini, et dans ce cas on utilise str_replace :
$texte=str_replace($motARemplacer,$remplacement, $texte);
ou les variables $motARemplacer et $remplacement peuvent etre des tableaux ( c'est pratique si tu as plusieurs remplacement a faire ).

- soit le ou les mots a remplacer sont seulement d'une certaine forme ( par exemple tout mot qui commence par un a, tout texte entre parenthese, entre accolades, tout mot qui contient au moins 3 chiffres, etc... ) et dans ce cas on emploie preg_replace avec ce qu'on appelle les "expressions regulieres". voir un tres bon tutoriel ici :
http://www.phpfrance.com/tutoriaux/inde ... pcre-ripat

et un exemple : remplacer tout les mots entre accolades par un mot en gras ( en HTML ) :
// ce code remplace tout les mots de la forme : {un certain texte} par <b>un certain texte</b>
$texte = preg_replace('#{([^}]+)}#U','<b>$1</b>',$texte);
ca a l'air barbare, mais en fait c'est assez simple et excessivement puissant, une fois qu'on sait s'en servir on ne peut plus s'en passer !!
voila, si tu penses avoir besoin d'expression reguliere et que tu ne sais vraiment pas t'en servir, precise ce que tu veux faire exactement..

Eléphant du PHP | 355 Messages

05 déc. 2005, 03:28

Merci encore jobherzt :wink:

J'ai esayer ceci pour l'instant:
<?php
	 $fp = fopen ("fichier.txt", "r");      // On ouvre le fichier 
	 file_get_contents($fp)                // On lit le fichier
	 fclose ($fp);                        // On ferme le fichier
	 $texte=str_replace('Merde' ,'',$texte); // on suprimme tout les [ Merde ] dans le fichier
	 $fp = fopen ("fichier.txt", "w+");      // On ouvre le fichier
           // On écrit le nouveau fichier
	 fclose ($fp);                        // On ferme le fichier
?>
Mais une erreur est renvoyer sur cette ligne:
	 $texte=str_replace('Merde' ,'',$texte); // on suprimme tout les [ Merde ] dans le fichier

Eléphanteau du PHP | 18 Messages

05 déc. 2005, 06:29

hello phpdog,

J'ai vu ton post en passant, je dirais que t'as tout simplement pas initialisé
ta variable $texte.
Je mettrais un truc du style :

Code : Tout sélectionner

$texte=file_get_contents($fp)
c'est dingue ce qu'on peut etre etourdi des fois :!:

bonne continuation
dd-bug (#)

@softibox.com

Eléphant du PHP | 383 Messages

05 déc. 2005, 08:53

exact, $fp designe ton fichier, mais il faut bien que tu lui dise ou stocker le texte que tu as lu dedans..

Eléphant du PHP | 355 Messages

05 déc. 2005, 14:55

OK, don maitenant j'ai ceci:
<?php 
     $fp = fopen ("fichier.txt", "r");      // On ouvre le fichier 
     $texte=file_get_contents($fp))                // On lit le fichier 
     fclose ($fp);                        // On ferme le fichier 
     $texte=str_replace('Merde' ,'',$texte); // on suprimme tout les [ Merde ] dans le fichier 
     $fp = fopen ("fichier.txt", "w+");      // On ouvre le fichier 
           // On écrit le nouveau fichier 
     fclose ($fp);                        // On ferme le fichier 
?>

Et la j'ai une erreur sur la ligne 4.

ViPHP
ViPHP | 2144 Messages

05 déc. 2005, 14:59

Dis, tu ne pourrais pas y mettre un peu du tien ?
Parce que j'ai une erreur à la ligne 4, c'est un peu beaucoup limité comme info.
Quel est le message d'erreur ?
Qu'as-tu essayé pour solutionner le problême avant de poster?
Etc

nous ne sommes pas des débuggeures bénévoles en ligne. Tu as un problême, tu ne comprends quelques chose, ok on est là pour ça, mais pas pour faire tout le boulot à ta place...

Eléphant du PHP | 355 Messages

05 déc. 2005, 15:02

Bonjour Iclo :wink:

Voici l'erreur:

Code : Tout sélectionner

Parse error: parse error in
Ben justement la je ne pige pas.

Eléphant du PHP | 383 Messages

05 déc. 2005, 15:13

Hum... tu as oublie un point virgule qqpart....... :D :D :D :D :D :D :D :D

[edit] et au meme endroit tu as une parentehese en trop :-)[/Edit]

je te laisse chercher aux alentour de la ligne 4 :-)

Eléphant du PHP | 355 Messages

05 déc. 2005, 15:16

Merci :wink:

J'ai rajouter se point virgule:
<?php 
     $fp = fopen ("fichier.txt", "r");      // On ouvre le fichier 
     $texte=file_get_contents($fp);                // On lit le fichier 
     fclose ($fp);                        // On ferme le fichier 
     $texte=str_replace('Merde' ,'',$texte); // on suprimme tout les [ Merde ] dans le fichier 
     $fp = fopen ("fichier.txt", "w+");      // On ouvre le fichier 
           // On écrit le nouveau fichier 
     fclose ($fp);                        // On ferme le fichier 
?> 
Et voici l'erreur maitenant:

Code : Tout sélectionner

Warning: file_get_contents() expects parameter 1 to be string, resource given in c:\WWW\remplc.php on line 3

Eléphant du PHP | 383 Messages

05 déc. 2005, 15:26

excuse moi, je t'ai induit en erreur, mais ca prouve que tu n'as pas lu la doc :-) mauvais reflexe !! get_file_content ne prend pas en parametre un handle sur un fichier mais directement le nom du fichier. autrement dit, il n'y a pas besoin de l'ouvrir au prealable, ni de le fermer ensuite.

Eléphant du PHP | 355 Messages

05 déc. 2005, 15:33

Ah oui, effectivement, voila maitenant sa marche parfaitement:
<?php
$texte=file_get_contents("fichier.txt"); // On lit le fichier
$texte=str_replace('Merde' ,'',$texte); // on suprimme tout les [ Merde ] dans le fichier
$fp = fopen ("fichier.txt", "w+"); // On ouvre le fichier
// On écrit le nouveau fichier
fclose ($fp); // On ferme le fichier
?>