PHP:vider un fichier texte

deb_fab Messages postés 45 Statut Membre -  
 Psycho -
bonjour
sur un site, je dois modifier le contenu d'un fichier texte de base.
jusque la pas de probleme. ouverture ok et ecriture ok.
mais quand on réécris un texte qui est plus court que le précedent, le partie non-écrasé reste. la fin de fichier n'est apparement pas deplacé.

ce qui deonne en fin de compte de textes du genre :
...texte...htm>tm>m>htm>m>

il faudrait donc que je vide le fichier avant.
quelqu'un sauari comment svp ? merci

8 réponses

  1. 5 ans plus tard..
     
    J'ouvre mon fichier en ecriture:
    $ecrire = fopen('fichier.txt',"w");

    Je tronque mon fichier jusqu'au pointeur en position 0.
    ftruncate($ecrire,0);


    Manuel PHP:
    FOPEN : http://fr2.php.net/manual/fr/function.fopen.php
    FTRUNCATE : http://fr2.php.net/manual/fr/function.ftruncate.php
    28
    1. NoBoDy
       
      ça marche niquel ;-)
      0
    2. Psycho
       
      Merci!
      0
  2. B@|-|@N Messages postés 386 Statut Membre 62
     
    Tu l'effaces et le recrées ?

    Bahan, comment ça moi bourrin ^_^
    1
  3. deb_fab Messages postés 45 Statut Membre 8
     
    en faite pour récision, je fais que l'ouvrir et ecrire dedant.

    si ca peut aider :
    <?
    $page=$_GET['fichier']; //passage du nom de fichier en url
    $lignetot=$_POST['body']; //passage du texte en post
    $monfichier=fopen($page,"r+"); //ouverture de fichier
    fseek($monfichier,0);
    // la, j'essaye de vider le fichier, pas convainquant !
    while($i<=999)
    {
    fputs($monfichier," ");
    $i=$i+1;
    }
    fputs($monfichier," ");
    fseek($monfichier,0);
    fputs($monfichier,stripslashes($lignetot)); // et on réécrit le nouveau texte
    fclose($monfichier); // ferme le fichier
    ?>

    <meta http-equiv="refresh" content="0;URL=AMPO_ADMIN.php">
    1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dugenou Messages postés 6262 Statut Contributeur 1 455
     
    Bonsoir,

    Dans la fonction fopen() :

    fopen($page,"r+")

    essaie de remplacer le r+ par a+

    Voir :

    https://www.php.net/manual/fr/function.fopen.php

    Bon courage
    0
    1. deb_fab Messages postés 45 Statut Membre 8
       
      merci
      mais je vourai remplacer le texte et non l'ajouter a la fin.
      par contre dans ton lien j'ai remarqué un w+ : Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
      je m'en vais le tester sur le champs.
      0
  6. jisisv Messages postés 3678 Statut Modérateur 936
     
    Pour rappel
    http://php.easynet.be/manual/fr/function.unlink.php

    Johan
    0
  7. pour_quoi_pas Messages postés 40 Statut Membre 10
     
    Salut

    Effectivement même si ce n'est pas la manière la plus propre un
    fopen("monfichier.ext", "w+")
    ça passe.

    Ou comme l'a dit jiisiv, d'abord
    unlink("chemin/monfichier.ext") 
    puis tu le recrée avec le fopen du dessus.
    0
  8. Gremy87 Messages postés 360 Statut Membre 38
     
    Bonjour,

    toujours regarder le manuel, c'est le meilleur ami du developeur^^

    => RESOLU si c'est le cas
    0