Supprimer des élements dans un fichier txt

[Résolu/Fermé]
Signaler
-
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
-
Bonjour,
je souhaite supprimer des informer contenus dans fichier txt à partir d'un script PHP. Mes informations sont de la forme a-b-c-d-e;f-g-h-i-j;k-l-m-n-o; etc...

je souhaite d'abord vérifier si un élément donné existe, supprimer toutes les informations contenants cet éléments (c-a-d entoutré par ";" si au milieu du fichier ou sinon terminé par ";" si dé&but du fichier ou bien précédé d'un ";" si fin de fichier.

Quelle solutpar exemple si mon fichier contient les informations suivantes ion me proposez-vous ?

par exemple si mon fichier contient les informations suivantes : a-b-c-d-e;f-g-h-i-j;k-l-m-n-o et que je recherche l'élément "h", je veux supprimer tout l'arbre du "h" soit f-g-h-i-j. j'aurais donc au finale un fichier avec comme informations restantes a-b-c-d-e;k-l-m-n-o.

d'avance merci de votre aide.

2 réponses

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
914
salut,

je te propose une solution qui utilise la puissance des tableaux et te renvoie vers le manuel PHP qui t'expliquera beaucoup mieux que moi le rôle des différentes fonctions.
<?php
	function customFilter( $value )
	{
		global $forbidden;
		return is_bool( strpos( $value , $forbidden ) );
	}
	
	$lines = file( 'ton_fichier_texte.txt' );
	$forbidden = 'g';
	$new = array_filter( $lines , 'customFilter' ) );
	$text = implode( "\n" , $new );
?>

• 'file()'

'array_filter()'

'implode()'
Messages postés
1
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
25 mars 2008

Bonjour Dalida,
merci de ta réponse. J'ai essayé ta fonction mais elle me mettait des erreurs. Je m'en suis donc inspiré pour en créer une qui fonctionne mieux et qui me fait exactement ce que je voulais. Merci pour la fonction "array_filter" que j'avais complètement zapée. ;D

<?php
function CustomFunction($var)
{

/*
fonction utilsateur qui me retourne que les éléments qui n'ont pas l'élément recherché $Pattern
*/
global $Pattern;
return !ereg($Pattern,$var);
}

function DeleteElements($Pattern,$NomFichier)
{
/*
fonction qui se charge de récupérer les éléments qui n'ont pas l'élément cherché me réinjecte les ";" jusqu'à la fin de l'avant-dernier élément
et m'écrase le contenu de mon fihier $NomFichier pour un contenu qui ne possède plus l'élément qu'on recherchait
*/
$Contenu = explode(";",file_get_contents($NomFichier));
$NewContenu = array_filter($Contenu, "CustomFunction");
$combien = count($NewContenu);

for($i = 0; $i <= $combien - 1;$i++)
{
$NewText = implode(";",$NewContenu);
}
file_put_contents($NomFichier,$NewText);
}
?>
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
914
salut,

bah c'est parfait ça !!!

je coche "résolu".

bon courage pour la suite !