Posez votre question Signaler

[php] expressions régulières [Résolu]

Dinheru 1019Messages postés 20 avril 2005Date d'inscription - Dernière réponse le 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
Lire la suite 

[php] expressions régulières »

12 réponses
Réponse
+0
moins plus
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);
?>

++

Ajouter un commentaire
Réponse
+0
moins plus
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.
kij_82- 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].

++
Dinheru- 17 mai 2005 à 11:23
Merci je vais essayer ça !!
kij_82- 17 mai 2005 à 11:24
regarde plus bas.
Ajouter un commentaire
Réponse
+0
moins plus
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?
kij_82- 17 mai 2005 à 14:16
faut cocher le post en tant que "résolu" alors si c'est possible..
kij_82- 17 mai 2005 à 16:30
merci :)
Dinherukij_82 - 17 mai 2005 à 16:32
De rien !! ^^
Ajouter un commentaire
Ce document intitulé « [php] expressions régulières » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?