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 :

Décodage d'une chaine de connexion [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Points : 30
    Points
    30
    Par défaut Décodage d'une chaine de connexion
    Bonjour,

    Voilà donc mon problème;
    J'essaie d'optimalement décoder des chaînes de connexions qui arrivent dans plusieurs formats, et j'ai considéré les REGEX pour m'aider a la tâche.

    En gros, peut importe le format et les infos de la chaîne, j'ai besoin d'une info comprise entre "MOTFIXE=" et le premier ";" ou fin de ligne trouvé.

    Mon problème réside dans le fait que le regex est un peu gourmand et ramasse tout ce qu'il peut. Et je n'arrive pas a faire quelque chose de correct pour ramassé seulement l'info dont j'ai besoin.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Data Source=test;User ID=login;Persist Info=true;Password=bidon"
    J'ai donc quelque chose qui ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<=USER ID\=).*(?=\;|$)
    Qui récupère donc la chaine précédé par "User ID=" qui se termine par un ; ou une fin de ligne. On comprendra que dans l'exemple, je me ramasse avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "login;Persist Info=true;Password=bidon"
    J'ai chercher un peu sur le web et je trouve des trucs avec des REGEX "non-greedy" avec des jeux de "?", sauf que je n'arrive pas a machiner la chose pour la faire fonctionner comme je le veux.

    Donc je viens voir ici si quelqu'un peut me donner un petit coup de main pour compléter ce petit REGEX et finalisé mon bout de code


    Merci d'avance,

    Amuny,

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Citation Envoyé par Amuny
    le regex est un peu gourmand et ramasse tout ce qu'il peut [...] J'ai chercher un peu sur le web et je trouve des trucs avec des REGEX "non-greedy" avec des jeux de "?"
    Ton motif est correct et fonctionne TEL QUEL si tu utilises l'option (*) U (PCRE_UNGREEDY)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('/(?<=USER ID=).*(?=;|$)/iU',$str,$match);
    sinon, on ajoute le ? qui permettra au moteur de s'arrêter au premier point-virgule ou à la fin de la chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('/(?<=USER ID=).*?(?=;|$)/i',$str,$match);
    (*) Options disponibles pour les expressions rationnelles

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Ah ouais quand même, je me sens presque con, j'était en plein dessus, je mettais juste pas le "?" au bon endroit...

    merci bien

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

Discussions similaires

  1. Définition d'une chaine de connexion
    Par maniravitch dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 28/02/2008, 10h52
  2. [D7] Paramètrer une chaine de connexion
    Par EMC51 dans le forum Delphi
    Réponses: 1
    Dernier message: 15/11/2006, 14h32
  3. Réponses: 4
    Dernier message: 20/10/2006, 16h19
  4. Réponses: 1
    Dernier message: 21/07/2006, 12h36
  5. [VB.Net 2.0/xsd] Comment passer une chaine de connexion dynamiquement ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 4
    Dernier message: 21/07/2006, 11h20

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