Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2006, 14h13   #1
Invité de passage
 
Inscription : septembre 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 4
Points : 0
Points : 0
Par défaut suppression d'une ligne d'un fichier texte suite à une recherche de caractère

Bonjour à tous et toutes,

voilà j'zai un fichier texte et je voudrais pouvoir supprimer toutes les lignes comportant le caractère '£'. chacunes de ces lignes est séparée par un retour chariot. J'étais parti sur la focntion ereg mais sans y parvenir. voici mon code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
//chargement des variables de connexion à la base de données ...
@ini_set('max_execution_time',0);
@ini_set('memor_limit','100M');
 
//définition des variables de travail
$repertoire=".";
$nomfich="ecritures";
$fichdep=$nomfich.".txt";
$fichnew=$nomfich."_modif.txt";
 
	//on supprime le résulat d'un traitement antérieur
	if(file_exists ($fichnew))
		unlink($fichnew);
 
	if(file_exists ($fichdep))
	{
		$count=0;
		$fd = fopen ($fichdep, "r"); 
	  	$fichier=fopen($fichnew,"a+");   
   		while (!feof ($fd))
    		{ 
			$buffer = fgets($fd, 4096); 
			if(strpos($buffer,",")>0)
	  		{
				/*pour chacune des lignes*/
				if (ereg("£",$ligntemp));
				{$ligntemp="";}
				else
				//on ecrit un M en début de ligne
				{$ligntemp='M'.substr($buffer,1);								
				//on remplace le caractère G par 000				
				$ligntemp=substr($ligntemp,0,11).'000'.substr($ligntemp,14);	
				//on supprime la , pour avoir les montants en centimes
				$ligntemp=substr($ligntemp,0,42)." ".str_replace(",","",substr($ligntemp,42));
    	   			fwrite($fichier,$ligntemp);
				$count=$count+1;
				}
			}
   		}
   		fclose ($fd);
		fclose ($fichier);
		echo "OK Traitement terminé: $count ecritures modifiées !";
	}
	else echo "ERREUR : fichier ecritures.txt NON trouve !";
?>

Merci d'avance pour vos lumières..
cgo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 14h49   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
salut,
déjà tu devrais utiliser les balises code en cliquant sur # ci dessus, le code est alors plus facile à lire.
Ensuite, qu'est ce qui ne marche pas? as-tu un message d'erreur?
Moi à première vue, je ferai un truc comme ça :
Code :
1
2
3
4
5
6
7
8
if ($open = fopen($src,'r')){
			$content = fread($open, filesize($src));
			$handle = split("\n", $content);
			foreach ($handle as $line){
				if (ereg('£',$line) unset($handle[i]);
				$i++;
			}
}
J'ai pas testé le code, mais c'est disons pour l'idée
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 14h52   #3
Invité de passage
 
Inscription : septembre 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 4
Points : 0
Points : 0
Par défaut réponse

Citation:
Envoyé par julien.63
salut,
déjà tu devrais utiliser les balises code en cliquant sur # ci dessus, le code est alors plus facile à lire.
Ensuite, qu'est ce qui ne marche pas? as-tu un message d'erreur?
Moi à première vue, je ferai un truc comme ça :
Code :
1
2
3
4
5
6
7
8
if ($open = fopen($src,'r')){
			$content = fread($open, filesize($src));
			$handle = split("\n", $content);
			foreach ($handle as $line){
				if (ereg('£',$line) unset($handle[i]);
				$i++;
			}
}
J'ai pas testé le code, mais c'est disons pour l'idée

Désolé pour le vilain copier/coller, je teste ton idée et te route le résultat. Merci!
cgo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 15h28   #4
Invité de passage
 
Inscription : septembre 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 4
Points : 0
Points : 0
Par défaut suite

Désolé mais rien ne se passe, pas de message d'erreur pas de modification dans le fichier, je redonne le code saisi.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//définition des variables de travail
$repertoire=".";
$src="ecritures.txt";
if ($open = fopen($src,'r'))
	{
			$content = fread($open, filesize($src));
			$handle = split("\n", $content);
			foreach ($handle as $line)
				{
					if (ereg('£',$line))
					 {
					 	unset($handle[i]);
						$i++;
					}
				}
	}
?>
Merci pour de nouvelles idées ou une correction, je continue à tester de mon côté.

Citation:
Envoyé par cgo02
Désolé pour le vilain copier/coller, je teste ton idée et te route le résultat. Merci!
cgo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 17h03   #5
Invité de passage
 
Inscription : septembre 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 4
Points : 0
Points : 0
Par défaut ouhouh

il n'y a personne
cgo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h24.


 
 
 
 
Partenaires

Hébergement Web