[php] expressions régulières

Résolu
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   -  
Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention   -
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention   67
 
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention   67
 
Merci je vais essayer ça !!
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857 > Dinheru Messages postés 1019 Date d'inscription   Statut Membre Dernière intervention  
 
regarde plus bas.
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Si elle existe oui, je regarde...
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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   Statut Membre Dernière intervention   67
 
Merci a vous pour votre aide !!
J'ai enfin réussit ^^

@+
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
faut cocher le post en tant que "résolu" alors si c'est possible..
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857 > kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci :)
0