Supprimer du texte dans un fichier en php

Résolu
Bonjour,
j'aimerai savoir comment supprimer du texte dans un fichier grâce au php.
En gros je voudrait faire l'inverse de ce code

$fichier = fopen('lmenu.php', 'a');
$config = '
<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>';
		fwrite($fichier, $config);
		fclose($fichier);


merci d'avance
--
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sais pourquoi.
Ici nous avons réuni théorie et pratique: rien ne fonctionne .... et personne ne sais pourquoi (A. Einstein).
Configuration: Pc portable :
Processeur : intel core duo 1.88Ghz
Carte graphique : Nvidia GeForce Go 7600 128Mo (jusqu'à 1586Mo en partagés)
Disque dur : 100Go
Ram : kingstone 1,5Go (bientôt 4Go)
Écran : celui du pc portable (16,5 pouces) et une tv écran plat HD de 20pouces ^^
système d'exploitation : windows vista ultimate sp2

16 réponses

  1. Bonjour

    Pour couper la fin d'un fichier, il y a la fonction ftruncate
    https://www.php.net/manual/fr/function.ftruncate.php

    Si ce n'est pas seulement la fin que tu veux couper, mais une partie intermédiaire, il faut lire le début du fichier en le recopiant dans un fichier intermédiaire, lire la partie que tu ne veux pas sans la recopier, et enfin lire la fin en la recopiant. Tu ne peux pas directement retirer un morceau du milieu d'un fichier.
    0
    1. bah enfaite mon script ajoute
      <li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>

      en modifiant '.$_POST['module'].' et '.$_POST['nom'].' en fonction de ce que l'utilisateur a écris mais après j'ai fait le même script mais qui la supprime ce que l'on à créer dans la fonction ajout donc ce lien ce peut ce retrouver aussi bien au début que a la fin ou au milieu
      merci quand meme
      0
      1. ce que tu peux faire:

        par la fonction file() tu lis le fichier

        $array_fichier=fiche('ton_fichier.txt');
        $recherche='<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>';
        //ensuite tu parcours cet array
        //on va tester la partie recher et la remplacer par ""  (vide) et réecrire la ligne dans le fichier
         $fp = fopen ('ton_fichier.txt', "r+");  //ouverture fichier
        
         fseek ($fp, 0);  //remise a zero pointeur 
        
          
        foreach($array_fichier as $cle=>$value){
             $array_fichier[$cle]=preg_replace($recherche,"",$value); //modif eventuelle si chaine trouvée
            //on reecrit
           fputs ($fp, $array_fichier[$cle]); 
        
        }
         fclose ($fp);
        
        
        
        
        
        0
        1. sa ne marche sa me dit que la fonction fiche est inconnue
          0
          1. oups ! erreur de frappe c'est file

            $array_fichier=file('ton_fichier.txt'); //attention il faut mettre le chemin relatif de ton fichier par rappport a ce script
            $recherche='<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>';
            //ensuite tu parcours cet array
            //on va tester la partie recher et la remplacer par ""  (vide) et réecrire la ligne dans le fichier
             $fp = fopen ('ton_fichier.txt', "r+");  //ouverture fichier
            
             fseek ($fp, 0);  //remise a zero pointeur 
            
              
            foreach($array_fichier as $cle=>$value){
                 $array_fichier[$cle]=preg_replace($recherche,"",$value); //modif eventuelle si chaine trouvée
                //on reecrit
               fputs ($fp, $array_fichier[$cle]); 
            
            }
             fclose ($fp);
            
            
            


            si ça ne fait pas les retours à la ligne dans le fichier après recriture remplaces:

            fputs ($fp, $array_fichier[$cle]);

            par

            fputs ($fp, $array_fichier[$cle]."\n");
            0
            1. maintenant j'ai cette erreur

              Warning: preg_replace() [function.preg-replace]: Unknown modifier '<' in D:\xampp\htdocs\stylemario\paneladmin\admin\test2.php on line 50
              0
              1. mets:

                $recherche='/<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>/i';
                
                0
                1. sa me donne maintenant

                  Warning: preg_replace() [function.preg-replace]: Unknown modifier 'a' in D:\xampp\htdocs\stylemario\paneladmin\admin\test2.php on line 50

                  j'arrive pas à trouver l'erreur
                  0
                  1. j'avais pas fais attention il faut éechapper "les / par \

                    $recherche='/<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'<\/a><\/li>/i';
                    
                    0
                    1. quand il n'y a que un seul lien
                      sa ne le supprime
                      mon programme détecte une modification mais le lien reste toujours la

                      et quand il y en a plusieurs et que je supprime le premier sa reécri ceux qui sont âpres donc les lien sont en double
                      0
                      1. sa ne le supprime
                        mon programme détecte une modification mais le lien reste toujours la


                        je ne comprend pas ça le supprime ou pas ?

                        chez moi j'ai fait un test avec un petit bout de fichier et un seul lien ça le supprime bien

                        comment peux tu avoir deux leins identiques dans le même fichier ?
                        0
                        1. j'ai refait le lien avec 2 lien

                          au début mon fichier était comme sa
                          <li><a href="aaa.php">le test</a></li>
                          <li><a href="aaaa.php">les test</a></li>


                          et après avoir essayer de supprimer le premier lien sa me donne

                          <li><a href="aaaa.php">les test</a></li>i><a href="aaaa.php">les test</a></li>


                          si sa peut aider voici le code de ma page

                          switch ($_GET['etape'])
                          		{
                          			case "v":
                          unlink(''.$_POST['module'].'.php');//on suprimme le module
                          //suppression du lien du menu
                          $array_fichier=file('lmenu.php'); //attention il faut mettre le chemin relatif de ton fichier par rappport a ce script
                          $recherche='/<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'<\/a><\/li>/i';
                          //ensuite tu parcours cet array
                          //on va tester la partie recher et la remplacer par ""  (vide) et réecrire la ligne dans le fichier
                           $fp = fopen ('lmenu.php', "r+");  //ouverture fichier
                          
                           fseek ($fp, 0);  //remise a zero pointeur 
                          
                            
                          foreach($array_fichier as $cle=>$value){
                               $array_fichier[$cle]=preg_replace($recherche,"",$value); //modif eventuelle si chaine trouvée
                              //on reecrit
                             fputs ($fp, $array_fichier[$cle]); 
                          
                          }
                           fclose ($fp);
                          mysql_query('DROP TABLE `'.$_POST['module'].'`');//on supprime la table
                          		echo "
                          		<h1>Module supprimer</h1>
                          		<p>votre module est supprimer</p>
                          		<a href=\"./\"";
                          			break;
                          			default:
                          						echo "
                          		<h1>Ajout de module</h1>
                          		<br />
                          		<form action=\"?module=supprpages&etape=v\" method=\"post\">
                          			<table>
                          				<tr>
                          					<td>Nom du module :</td>
                          					<td><input class=\"champ\" type=\"text\" name=\"module\" value=\"\"></td>
                          				</tr>
                          				<tr>
                          					<td>Titre dans le menu :</td>
                          					<td><input class=\"champ\" type=\"text\" name=\"nom\" value=\"\"></td>
                          				</tr>
                          			</table>
                          		<br />
                          		<center><input type=\"submit\" name=\"etape_1\" value=\"Suivant\"></center>
                          		</form></p>";
                          			break;
                          		}


                          cette page est inclu dans un autre qui inclu le header et le footer
                          0
                          1. Pourtant chez moi ça marchait

                            essayes avec

                            $fp = fopen ('lmenu.php', "w+");
                            0
                            1. Merci sa marche nickel.
                              Merci de m'avoir aidé a complété la pièce manquante de mon script.
                              Si tu veut le tester dit le moi je te le ferai tester avec plaisir.
                              Merci encore d'avoir pris le temps de m'aider
                              0
                              1. Ok, merci, mais pour le moment je n'en ai pas l'utilité.

                                Bon courage
                                0

                                Discussions similaires

                                question pix mot caché

                                7 réponses