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.