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 :

Comment récupérer toutes les occurrences qui satisfont ma Regex ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut Comment récupérer toutes les occurrences qui satisfont ma Regex ?
    Bonjours à tous, je suis en train d'écrire une Regex mais j'ai une erreur avec celle-ci.
    Voici le texte dont je voudrai extraire des infos :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [
      {
        "id": "b266fcc9",
        "title": "test",
        "description": "test123",
        "stock": 1,
        "price": "10.0",
        "currency": "USD",
        "product_type": 2,
        "private": false,
        "unlisted": false,
        "created_at": "2017-01-21T00:36:21.000Z",
        "updated_at": "2017-01-21T00:36:21.000Z"
      }
      {
        "id": "6762882b",
        "title": "test3",
        "description": "edede",
        "stock": 1,
        "price": "5.0",
        "currency": "USD",
        "product_type": 2,
        "private": false,
        "unlisted": false,
        "created_at": "2017-02-06T13:37:03.000Z",
        "updated_at": "2017-02-06T13:37:03.000Z"
      }
    ]
    J'ai diminuer sa taille pour le prendre plus visible. Dans mon exemple j'utiliserai donc celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = '[{"updated_at":"2017-01-21T00:36:21.000Z"},{"updated_at":"2017-02-06T13:37:03.000Z"}]';
    Je cherche à récupérer toutes ce qu'il y a entre chaque {}.
    Mon résultat devrai donc être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {"updated_at":"2017-01-21T00:36:21.000Z"}
    {"updated_at":"2017-02-06T13:37:03.000Z"}
    Le problème c'est que on code me ressort tout car il ne fait pas occurrence par occurrence. Il se contente de prendre le premier '{' et le dernier '}'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"updated_at":"2017-01-21T00:36:21.000Z"}{"updated_at":"2017-02-06T13:37:03.000Z"}
    J'utilise donc preg_match_all pour que chaque occurrences de mon patern me soit renvoyé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $reponse = '[{"updated_at":"2017-01-21T00:36:21.000Z"},{"updated_at":"2017-02-06T13:37:03.000Z"}]';
    $reponse = str_replace('},', '}', $reponse); #je remplace le }, par }
     
    preg_match_all('#{(.*)}#', $reponse, $resul);  #Je récupère tout ce qui se trouve entre { }   (PREG_OFFSET_CAPTURE)
    print_r($resul);
    Or j'obtiens le le même résultats que plus celui plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"updated_at":"2017-01-21T00:36:21.000Z"}{"updated_at":"2017-02-06T13:37:03.000Z"}
    Auriez-vous une idée pour régler le problème ?
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    tu pourrais passer par json_decode ...

    sinon avec preg_match_all

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reg= "~(\{[^}]+\})~u";
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 83
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu pourrais passer par json_decode ...

    sinon avec preg_match_all

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reg= "~(\{[^}]+\})~u";
    Merci beaucoup, ta Regex fonctionne parfaitement. Je vais aller voir dans mon livre pour avoir plus d'explication sur celle-ci. Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    () = groupe de capture
    \{ => {
    [^{]=> suivi de plusieurs fois autre chose que }
    \} => suivi }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/06/2011, 16h29
  2. Réponses: 8
    Dernier message: 07/06/2009, 20h31
  3. Réponses: 5
    Dernier message: 24/06/2008, 13h07
  4. Comment récupérer toutes les valeurs dans :params avec form_tag ?
    Par Didier Pitre dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 17/04/2008, 10h33
  5. Réponses: 12
    Dernier message: 23/05/2006, 09h58

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