Rechercher : dans
Par :

[php] expressions régulières

Dernière réponse le 17 mai 2005 à 16:32:53 Dinheru, le 17 mai 2005 à 09:40:44 
 Signaler ce message aux modérateurs

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é. 

Meilleures réponses pour « [php] expressions régulières » dans :
[RegExp] Récupérer une adresse IP VoirFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la...
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
[PHP] Transformer une URL en lien hypertexte cliquable VoirGrâce aux expressions régulières, il est possible de transformer en lien hypertexte toute URL de la forme http://URL (ou ftp://URL) ou bien commençant par www. :
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

kij_82, le 17 mai 2005 à 10:17:14

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);
?>

++

~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

2

Dinheru, le 17 mai 2005 à 11:07:29

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

Répondre à Dinheru

3

kij_82, le 17 mai 2005 à 11:13:24

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].

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

7

Dinheru, le 17 mai 2005 à 11:23:47

Merci je vais essayer ça !! La vie c'est comme du chocolat, parfois dur et amer,
parfois chaud et sucré. 

Répondre à Dinheru

8

kij_82, le 17 mai 2005 à 11:24:22

Regarde plus bas. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

4

teebo, le 17 mai 2005 à 11:18:48

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? It is only by not paying one's bills that one can
hope to live in the memory of the commercial classes.

Répondre à teebo

5

kij_82, le 17 mai 2005 à 11:19:37

Si elle existe oui, je regarde... ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

6

kij_82, le 17 mai 2005 à 11:22:49

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.

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

9

Dinheru, le 17 mai 2005 à 13:52:48

Merci a vous pour votre aide !!
J'ai enfin réussit ^^

@+ La vie c'est comme du chocolat, parfois dur et amer,
parfois chaud et sucré. 

Répondre à Dinheru

10

kij_82, le 17 mai 2005 à 14:16:48

Faut cocher le post en tant que "résolu" alors si c'est possible.. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

11

kij_82, le 17 mai 2005 à 16:30:44

Merci :) ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

12

 Dinheru, le 17 mai 2005 à 16:32:53

De rien !! ^^ La vie c'est comme du chocolat, parfois dur et amer,
parfois chaud et sucré. 

Répondre à Dinheru