Supprimer du texte dans un fichier en php

Résolu
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -  
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

16 réponses

le père
 
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
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
sa ne marche sa me dit que la fonction fiche est inconnue
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
mets:

$recherche='/<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'</a></li>/i';
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
j'avais pas fais attention il faut éechapper "les / par \

$recherche='/<li><a href="'.$_POST['module'].'.php">'.$_POST['nom'].'<\/a><\/li>/i';
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Pourtant chez moi ça marchait

essayes avec

$fp = fopen ('lmenu.php', "w+");
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Ok, merci, mais pour le moment je n'en ai pas l'utilité.

Bon courage
0
sob_12 Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   15
 
merci ;)
0