[php] expressions régulières

Résolu
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
--
La vie c'est comme du chocolat, parfois dur et amer,
parfois chaud et sucré. 

3 réponses

  1. Contributeur
    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
    1. 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
      1. Contributeur
        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
      2. Merci je vais essayer ça !!
        0
      3. Contributeur
        @Dinheruregarde plus bas.
        0
    2. Contributeur
      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
      1. Contributeur
        Si elle existe oui, je regarde...
        0
      2. Contributeur
        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
      3. Merci a vous pour votre aide !!
        J'ai enfin réussit ^^

        @+
        0
      4. Contributeur
        faut cocher le post en tant que "résolu" alors si c'est possible..
        0
      5. Contributeur
        @kij_82merci :)
        0