[php] expressions régulières

Résolu/Fermé
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 17 mai 2005 à 09:40
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 17 mai 2005 à 16:32
Bonjour à tous !!

J'ai un petit problème avec les expressions régulières. J'ai un fichier qui contient ce genre de données :

14149.00 1048.00 327.00
10032.00 1782.00 347.00
6226.00 1030.00 266.00
4449.00 912.00 342.00
4185.00 3865.00 2362.00
3875.00 1140.00 374.00
3484.00 1140.00 195.00
3406.00 863.00 240.00
3359.00 1187.00 250.00
3356.00 761.00 346.00

Les données de chaque colonnes correspondent à un paramètre différent. J'aimerais donc trouvé une expression régulière qui me permettrais de récupérer dans un tableau le premier chiffre de chaque ligne.
Le problème est que je débute avec les expressions régulières et que je ne sais pas trop comment faire.
Quel est la syntaxe de ereg() pour pouvoir récupérer les premiers chiffres de mes lignes ?

Merci
A voir également:

3 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 mai 2005 à 10:17
En effet, il te faur ereg, mais pour cela, il aut que tu lise ligne par ligne ton fichier avec la fonction fgets.
Ensuite tu fais une selection sur le début de ligne qui correspond à la suite suivante de caractère : [tous sauf caractère séparateur]
Et tu prend la valeur premièere du tableau retourné (ereg retourne un tableau).
Voilà un exemple :

<?php
 $fd = fopen( "monfichier.txt","r");
 while( !feof($fd)) {
     $buffer = fgets($fd, 4096);
     if( ereg( "([^    ]{1,*}(.*)", $buffer, $regs) ){
          echo "Partie selectionnee : ".$regs[0]."<BR>";
     } 
     else
         echo "pas de partie selectionnée ou pb<BR>";
 }
 close($fd);
?>

++

0
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
17 mai 2005 à 11:07
Merci pour ton aide kij.
J'ai réussit à récupérer le premier nombre de mes lignes de cette façon :
$fichier = "test.txt";
if(is_file($fichier))
{
  if($tabfich = file($fichier))
  {
    for( $i = 1 ; $i < 3 ; $i++ )
    {
      $num = ereg("([0-9]{3,5}).([0-9]{2})",$tabfich[$i],$regs);
      echo $tabfich[$i];
      echo "Partie selectionnee : ".$regs[0]."<BR>";
    }
  }
  else
  {
    echo "Le fichier ne peut être lu...<br>";
  }
}
else
{
  echo "Désolé le fichier n'est pas valide<br>";
}


et j'obtiens ceci :
14149.00 1048.00 327.00 Partie selectionnee : 14149.00
10032.00 1782.00 347.00 Partie selectionnee : 10032.00

Mais je ne trouve pas comment sélectionner le nombre du milieu et celui à la fin. Saurais-tu comment faire ?

Merci.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 mai 2005 à 11:13
Si tes nombre sont outjours au nombre de trois et de la même forme oui :
ereg("([0-9]{3,5}.[0-9]{2})[ ]+([0-9]{3,5}.[0-9]{2})[ ]+([0-9]{3,5}.[0-9]{2})",$tabfich[$i],$regs);


Cela te découpe ta ligne en trois morceaux qui seront rangés respectivement dans $regs[0], $regs[1] et $regs[2].

++
0
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
17 mai 2005 à 11:23
Merci je vais essayer ça !!
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009
17 mai 2005 à 11:24
regarde plus bas.
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
17 mai 2005 à 11:18
Salut vous deux
Ca ne serait pas plus simple d'utiliser une fonction split qui doit sûrement exister en PHP pour couper la chaîne à chaque espace?
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 mai 2005 à 11:19
Si elle existe oui, je regarde...
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 mai 2005 à 11:22
oui en effet,merci teebo de cette remarque :
$tab = array();
list($tab[0],$tab[1],$tab[2] = split( '[ ]', $LaLigne);


C'est plus simple et plus rapide.
Merci.

++
0
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 67
17 mai 2005 à 13:52
Merci a vous pour votre aide !!
J'ai enfin réussit ^^

@+
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 mai 2005 à 14:16
faut cocher le post en tant que "résolu" alors si c'est possible..
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
17 mai 2005 à 16:30
merci :)
0