Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
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 26/06/2007, 13h10   #1
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
Par défaut regex et recherche de texte dans un fichier

Bonjour,
Cela fait un moment que je me prend la tête, alors je craque et vous demande un peu d'aide !
Je débute en php et j'ai déjà fait du perl. Donc pour ma requête - récupérer des données dans un texte - je me suis logiquement tournée vers les regex. Mais j'ai un souci, car j'ai l'impression que seules les fonctions type preg_match fonctionnent avec les regex, or elles me renvoient le nombre d'occurence sur ma ligne et non, le contenu trouvé.
Je m'explique. J'ai un fichier du type :
Code X :
1
2
3
4
5
6
7
8
9
10
11
12
NUMBER=1892
380.8000,1.400e+4
381.4000,1.400e+4
424.8000,7.701e+4
NUMBER=1893
381.4000,2.100e+4
424.8000,1.120e+5
425.0000,6.301e+4
425.4556,2.870e+5
426.0000,3.501e+4
426.4000,2.100e+4
426.7000,2.100e+4
Je veux récupérer le chiffre après "NUMBER=" et le premier chiffre avant la virgule, ainsi que le second, après la virgule.
Or je coince !
J'ai essayé plein de trucs dont le dernier :
Code :
1
2
3
4
5
6
7
8
9
...
$fc=file($stock2);
$stock3 = $stock1."\\".$content_dir.".txt";
$f=fopen($stock3,"w");
foreach ($fc as $line)
{
	     $char=strrchr($line,'/\d+/'); 
       fputs($f,$char."\n"); 
}
mais évidemment ça marche pas car strrchr ne comprend pas les regex...
Si je mets preg_match à la place de strrchr, il m'écrit un "1" pour chaque ligne lue...normal !
Est-ce qu'il existe une fonction qui me permette de récupérer le contenu d'une régex ? Je suppose que oui, mais laquelle ???
Merci beaucoup pour votre aide précieuse !
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 13h15   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
D'apres la documentation de preg_match() le troisième paramètre, optionnel est un tableau qui contiendra le résultat que tu cherches il me semble
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 13h25   #3
Membre à l'essai
 
Inscription : septembre 2005
Messages : 71
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 71
Points : 22
Points : 22
Merci pour ta réponse !
Mais en fait, je ne sais pas pourquoi, mais ce qu'il y a en dessous, ça marche !!!
Code :
1
2
3
4
5
6
7
8
9
$fc=file($stock2);
$stock3 = $stock1."\\".$content_dir.".txt";
$f=fopen($stock3,"w");
foreach ($fc as $line)
{
	     preg_match('/\d+/',$line,$char); 
       fputs($f,$char[0]."\n"); 
}
fclose($f);
Je suis pourtant sûre de l'avoir déjà testé, mais bon, je suis
Merci beaucoup et désolée pour le post pas super utile..
minusette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h37.


 
 
 
 
Partenaires

Hébergement Web