IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche dans une suite de nombres [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut Recherche dans une suite de nombres
    Bonjour à tous.

    J'essaie depuis qq tps d'écrire une expression reguliere me permettant de rechercher une certaine suite logique ds une suite de nombre.
    Je voudrais en fait trouver une suite commençant par 08 suivie de 14 chiffres et enfin 5 chiffres quelconques apres cette suite.
    Cette suite logique peut se repeter jusqu'à 2 fois ds ma suite de nombre et peut aussi ne pas apparaitre.
    Voici un exemple permettant de mieux comprendre :
    suite de nbre : 156489531082154687945638975413256898765
    suite logique recherchée :0821546879456389 75413
    voici mon expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $expression = '(08[0-9]{14})([0-9]{5})?((08[0-9]{14})([0-9]{5})?)?'
    Qd je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ereg($expression,$suite_de_nbre,$code);
    je ne retrouve pas les bonnes suites ds $code[1],$code[2],$code[4]et $code[5]
    et des fois $code[4]et $code[5] sont vides alors qu'ils devraient être remplies.
    D'où vient le pb?

    Merci pour votre aide.

  2. #2
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Euh c'est quoi exactement ce que tu recherches ?
    avec preg_replace tu peux faire ça. Apres il faut voir ce que tu veux recuperer, par quoi tu veux remplacer etc...

  3. #3
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Je viens de faire un essai avec preg_match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      preg_match('/(08[0-9]{14})([0-9]{5})?/', '156489531082154687945638975413256898765', $res);
      print_r($res);
    ?>
    et le résultat est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array(
        [0] => 082154687945638975413
        [1] => 0821546879456389
        [2] => 75413
    )
    ce qui a priori correspond bien à ce que tu cherches ^^

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Citation Envoyé par DelphiManiac Voir le message
    Je viens de faire un essai avec preg_match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      preg_match('/(08[0-9]{14})([0-9]{5})?/', '156489531082154687945638975413256898765', $res);
      print_r($res);
    ?>
    et le résultat est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array(
        [0] => 082154687945638975413
        [1] => 0821546879456389
        [2] => 75413
    )
    ce qui a priori correspond bien à ce que tu cherches ^^
    Oui, merci pour ton aide.En effet, ce sont bien les resultats attendus;par contre lorsque la suite se complique je n'obtiens plus les bons resultats;
    exemple avec une suite de nbre contenant 2 suites logiques :
    15608149735648926499742368456329870816935468795643216549875651

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Citation Envoyé par Korko Fain Voir le message
    Euh c'est quoi exactement ce que tu recherches ?
    avec preg_replace tu peux faire ça. Apres il faut voir ce que tu veux recuperer, par quoi tu veux remplacer etc...
    Je veux rechercher ma suite logique (08....) et ne rien remplacer.
    Merci

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Et si tu remplaces preg_match par preg_match_all
    Ensuite tu accedes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Array(
        [0][0] => 082154687945638975413
        [0][1] => 0821546879456389
        [0][2] => 75413
    )
    @+
    cadou

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Par défaut
    Citation Envoyé par cadoudal56 Voir le message
    Hello,

    Et si tu remplaces preg_match par preg_match_all
    Ensuite tu accedes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Array(
        [0][0] => 082154687945638975413
        [0][1] => 0821546879456389
        [0][2] => 75413
    )
    @+
    cadou
    Malheureusement, ça ne change rien au pb;
    Le pb apparait lorsque ma suite de nb est trop longue.
    En reprenant l'exemple au dessus je devrais avoir ce genre de résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Array(
        [0] => 081497356489264997423
        [1] => 0814973564892649
        [2] => 97423
        [3] => 081693546879564321654
        [4] => 0816935468795643
        [5] => 21654
    )
    si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match('(08[0-9]{14})([0-9]{5})?((08[0-9]{14})([0-9]{5})?)?', 15608149735648926499742368456329870816935468795643216549875651, $res);
    Par contre mes res[3],res[4],res[5] sont vides.

    Merci pour votre aide.

  8. #8
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Je comprends pas trop où est le problème !

    Si sur l'exemple que je t'ai fourni, tu remplaces preg_match par preg_match_all :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      $str = '15608149735648926499742368456329870816935468795643216549875651';
      preg_match_all('/(08[0-9]{14})([0-9]{5})?/', $str, $res);
     
      print_r ($res);
    ?>
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Array
    (
        [0] => Array
            (
                [0] => 081497356489264997423
                [1] => 081693546879564321654
            )
        [1] => Array
            (
                [0] => 0814973564892649
                [1] => 0816935468795643
            )
        [2] => Array
            (
                [0] => 97423
                [1] => 21654
            )
    )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Incrémenter une valeur dans une suite de nombre
    Par beast666 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/04/2009, 15h18
  2. Recherche d'une suite de nombre dans un String
    Par Diablo_22 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 11/09/2008, 13h15
  3. Recherche de mot précis dans une suite de mot
    Par Adrien38240 dans le forum C
    Réponses: 4
    Dernier message: 02/06/2008, 11h25
  4. Recherche d'un chiffre dans une chaine de nombres
    Par syldudu dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 27/10/2006, 10h55
  5. afficher une suite de nombres dans une string
    Par hysah dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo