CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Problème regex

Dema
Dema
Niveau 12
07 novembre 2014 à 14:27:02

Bonjour, je dois parser une page json pour pouvoir récupérer un ID (XXXXX dans l'exemple)
Voici le json :
----
{ "response": { "steamid": "XXXXX", "success": 1 } }
----

Et voici ma regex :

preg_replace('#: "(.+)",#i', "<b>$1</b>", $result);

J'ai essayé avec plein d'autres choses, elle me renvoie tout le temps le json entier :(

Bunyan
Bunyan
Niveau 17
07 novembre 2014 à 14:34:38

Dans la plupart des langages, les opérateurs sont dit "gloutons" (greedy en anglais) et font matcher LE PLUS de choses possibles.
Le . étant le placeholder pour dire "tout", tu vas avoir un énorme matching.

Par contre... pourquoi utilises-tu une regex pour parser du JSON ? La multitude de solution clef en main permettant de traiter du JSON (un format pas bien dur à parser d'ailleurs) ne te satisfait pas ?
Oublie les regex, ce n'est pas adapté à ton problème, et part plutôt sur un parsing tout ce qu'il a de plus basique.

godrik
godrik
Niveau 30
07 novembre 2014 à 14:35:13

et pourquoi tu ne lis pas la json avec une lib de deserialization de chaine json?

Dema
Dema
Niveau 12
07 novembre 2014 à 14:38:34

| https://www.jeuxvideo.com/forums/1-47-110690-1-0-1-0-php-probleme-regex.htm#message_110692
| Ecrit par « godrik », 7 novembre 2014 à 14:35:13
| « deserialization »

Je ne connais pas du tout les autres moyens de parser :-(

Bunyan
Bunyan
Niveau 17
07 novembre 2014 à 16:28:49

La documentation est toujours une amie : http://php.net/manual/en/ref.json.php

deepblue
deepblue
Niveau 16
07 novembre 2014 à 17:35:44

Bunyan +1000

Sinon, juste pour le "fun" : $steamId = preg_replace('/.*"steamid": "([^"]+)".*/s', '$1', $json);

Dema
Dema
Niveau 12
07 novembre 2014 à 20:04:52

| Ecrit par « deepblue », 7 novembre 2014 à 17:35:44
| « Bunyan +1000
|
| Sinon, juste pour le "fun" : $steamId = preg_replace('/.*"steamid": "([^"]+)".*/s', '$1', $json); »

Merci beaucoup ! :)

Je vais quand même me pencher sur les autres méthodes

Dema
Dema
Niveau 12
08 novembre 2014 à 14:27:36

Le boulet est de retour :noel:
J'ai réussi ce que je voulais faire avec json_decode() et c'est vrai que c'est bien mieux :oui:

Par contre j'ai un soucis, j'ai ce json :

==============
{
"response": {
"players": [
{
"steamid": "**********",
"communityvisibilitystate": 3,
"profilestate": 1,
"personaname": "*****",
"lastlogoff": *****,
"profileurl": "http://steamcommunity.com/id/*****/",
"avatar": "http://media.steampowered.com/steamcommunity/publ
ic/images/****",

"avatarmedium": "http://media.steampowered.com/steamcommunity/publ
ic/images/******",

"avatarfull": "http://media.steampowered.com/steamcommunity/publ
ic/images/*****",

"personastate": 1,
"realname": "N/A",
"primaryclanid": "********",
"timecreated": ****,
"personastateflags": 0
}
]

}
}
==============

Quand je fais

$result2 = json_decode($result);

echo $result2->response->players->avatarmedium;

Il ne me renvoie rien :(

godrik
godrik
Niveau 30
09 novembre 2014 à 02:06:43

Je ne fais pas de PHP. Mais si j'ai bien tout compris a json_decode [1], ca renvoie des tableaux et des tableaux associatifs. Donc c'est probablement $result2["response"]["players"]["avatarmedium"] que tu veux utiliser.

[1] http://php.net/manual/en/function.json-decode.php

Dema
Dema
Niveau 12
09 novembre 2014 à 11:41:44

| https://www.jeuxvideo.com/forums/1-47-110690-1-0-1-0-php-probleme-regex.htm#message_110793
| Ecrit par « godrik », 9 novembre 2014 à 02:06:43
| « $result2["response"]["players"]["avatarmedium"] »

Salut,

C'est ce que je pensais au début mais ca renvoie des truc appelés des objets si j'ai bien compris, c'est pas comme des tableaux...

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment