Votre question

Modifier un fichier texte en php

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
20 Mai 2011 10:48:08

Bonjour,
J'ai crée une fichier php que je le donne comme paramètre un nom de fichier, le numéro de ligne et une chaîne et je veux qu'il modifie la ligne donnée comme paramètre par la nouvelle chaîne.
J'ai crée une fonction qui me retourne l'ancienne chaîne:
  1. define('FICHIER', 'fich.txt');
  2. $mot="mot1";
  3. $line = 3;
  4. $numligne= 0;
  5. @ $fp = fopen(FICHIER, 'r') or die('Ouverture en lecture de "' . FICHIER . '" impossible !');
  6. while (!feof($fp)) {
  7. $numligne++;
  8. $ligne = fgets($fp, 1024);
  9. if ($numligne == $line ) {
  10. $chaine = $ligne;
  11. break;
  12. }
  13. }
  14. fclose($fp);


mais je n'arrive pas à la modifier

merci de m'aider

Autres pages sur : modifier fichier texte php

a c 145 L Programmation
20 Mai 2011 11:35:18

Normal, tu ouvres ton fichier en 'r' donc tu ne peux que le lire.
Le plus simple à mon avis:
  1. <?php
  2. define('FICHIER', 'fich.txt');
  3. $mot = 'mot1';
  4. $ligne = 3;
  5. $temp = file(FICHIER);
  6. $temp[$ligne] = $mot;
  7. $fp = fopen(FICHIER, 'w');
  8. foreach($temp as $line) {
  9. fwrite($fp, $line.chr(13).chr(10));
  10. }
  11. fclose($fp);
m
0
l
20 Mai 2011 12:03:58

merci mais il y a un petit problème dans ton code ce qu'il laisse des lignes vides entre chaque ligne lue
m
0
l
Contenus similaires
20 Mai 2011 12:14:11

Quel est ton OS ?
.chr(13).chr(10) est prévu pour windows (<CR><LF>)
m
0
l
20 Mai 2011 12:19:57

je l'ai essayé sur ma machine locale (windows xp) et sur un serveur Linux et c le même problème. il change la ligne mais crée des lignes vides
m
0
l
20 Mai 2011 12:34:43

J'ai toujours un souci pour me rappeler lequel est lequel entre chr(13) et chr(10).

Essaye de les inverser sous windows, et par contre sur linux il ne faut que l'un des deux, mais, comme je disais, je ne me souviens plus duquel.

A tester.
m
0
l
a c 145 L Programmation
20 Mai 2011 14:21:58

chr(13) : CR (ou "/r") = Carriage return (retour chariot)
chr(10) : NL (ou "/n") = New line
m
0
l
20 Mai 2011 14:25:18

C'est plutôt des antislash au lieu des slash
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS