Expréssions régulières PHp

Fermé
maryooman Messages postés 7 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 22 novembre 2009 - 22 nov. 2009 à 13:53
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 22 nov. 2009 à 19:08
Bonjour,

je me permets d'écrire car même avec une dizaine d'onglets ouverts (et lu) relatif aux expressions régulières, je n'arrive pas résoudre ce problème.

Je veux lire dans un fichier et garder des infos qui m'intéressent, pour les mettre dans un fichier xml.

Le problème est le suivant :

catégorie 1 : ATI - HD4850, 99-129

je souhaite extraire le "1". Voici le code, lecture du fichier compris


if (!$fichier = file($var_fichier)) { //ouvre le fichier et place chaque ligne dans une case du tableau $ficher

echo "Echec de l\'ouverture du fichier"; //si le ficher ne s'ouvre pas, arrêt du programme
exit();

}
else { //si le ficher s'ouvre, alors on le parcours

$taille = count($fichier);
for($i = 0; $i < $taille; $i++) {
echo $fichier[$i]; //l'affichage est juste

$tmp= preg_grep('#catégorie.:#', $fichier);
echo $tmp;
}
}


donc pour l'extraction j'utilise : preg_grep('#catégorie.:#', $fichier);

en suivant les tuto j'ai conclu que cette forme est la plus juste ..... mais ça ne fonctionne pas !!

Pour résumé : me mot extraire est entre "catégorie" et ":", je en vois pas ce que je peut faire d'autre.

peut être que je dois utiliser une autre fonction que preg_grep ??

Voilà merci d'avance
A voir également:

4 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
22 nov. 2009 à 15:20
Je ne suis pas une bête d'expression régulière, mais je t'apporte une autre solution :

Tu utilise la méthode substr() pour couper le chiffre s'il est toujours au même endroit ^^

Tu peux même couper tant que tu ne rencontre pas le : à partir du caractère 'e' à la fin de catégorie.

Enfin voilà c'est une idée au cas où ;)
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 nov. 2009 à 15:30
preg_match( '#^catégorie\s[\d]{1,2}\s\:#', $fichier);


si mes souvenirs sont bons.
0
maryooman Messages postés 7 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 22 novembre 2009 1
22 nov. 2009 à 17:51
malheureusement elle ne marche pas smocking bird, en plus preg_match retourne le nombre de fois ou la chaine a té trouvé, pas la chaine elle même ...

scriptiz, j'ai besoin d'utilisé les expression régulières car je dois aussi extraire d'autres infos :

catégorie 1 : ATI - HD4850, 99-129

le "1", le "ati, le "hd4850", le "99" et le "129"

si j'y arrive avec le "1" alors je comprendrai pour les autres
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
22 nov. 2009 à 19:08
bonsoir,

preg_match("#catégorie ([0-9]+) :#",$string,$matches);


$matches[1] contiendra le chiffre
0