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 :

Problème pour parser


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème pour parser
    Bonjour,

    Je débute en regex, et j'avoue être un peu perdu pour parser une expression du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "pseudo","argent":110

    ... Sachant que :

    pseudo peut prendre plusieurs formes :

    • pseudo
    • pse-udo
    • pse udo
    • ps eu do
    • ps-eu do

    etc...
    En gros, à peu près n'importe quelle forme.

    J'ai essayé avec une expression du type :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $parse = ('/"(\w+)","(\w+)":(\d+)/');
    mais cela ne me renvoie que les pseudo du type "pseudo" (sans espace, sans tirets).

    J'ai beau lire la documentation sur les regex et posix, je comprends mal comment je pourrais récupérer ce pseudo.
    J'ai essayé une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $parse = ('/"(\w+|\w+.\w+)","(\w+)":(\d+)/');
    Mais cela ne me récupère que les pseudo de type :
    • pseudo
    • pse udo


    Voila, si quelqu'un pourrait m'éclairer ... Merci beaucoup !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    moi je nettoierais la forme recue en retirant les caractères non-lettre et je ferrais la comparaison sur ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse rapide !
    Bonne idée, ça ne m'était pas venu à l'esprit ... J'ai tout de même besoin du pseudo exact, mais je vais essayer de m'arranger pour remodeler ça pour avoir quelque chose de lisible en entrée, et de reconstruire quelque chose de semblable en sortie Je vous tient au courant.

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    S'il n'y a pas de guillemet dans ton pseudo tu peux aussi faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = substr($str, 1, strpos($str, '"', 1) - 1);
    Vive les roues en pierre

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    La solution de Djack sera je pense la plus performante, mais si tu veux le faire en regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $str = '"ps-eu do","argent":110"';
    preg_match('#"([\w\s-]+)","(\w+)":(\d+)#x', $str, $match);
    print_r ($match);
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ah, mais cest bien sûr ! Je connaissais la fonction substr(), mais je vois à quelle point elle peut être utile maintenant !
    Je vais tester ces deux solutions, je pense opter pour la solution de Djakisback puisqu'elle me semble plus simple à mettre en oeuvre ... Mais la solution de s.n.a.f.u marche très bien aussi, je m'en resservirai plus tard !

    Merci pour tout!

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

Discussions similaires

  1. [fileupload] problème pour parser la requete
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 12
    Dernier message: 24/04/2008, 12h02
  2. [DOM4J] Problème pour "parser" un fichier XML avec accents
    Par mlny84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 26/11/2007, 19h06
  3. [JDOM] Problème pour parser un fichier XML [débutant]
    Par adn013 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/05/2007, 12h00
  4. [POO] Problème pour Parser une page XML
    Par Death83 dans le forum Langage
    Réponses: 18
    Dernier message: 29/08/2006, 10h15
  5. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32

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