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 :

Extraire nom, prénom et email - preg_match_all


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2009
    Messages : 5
    Par défaut Extraire nom, prénom et email - preg_match_all
    Salut à tous,
    J'ai besoin d'une petite aide.
    Je veux extraire les mots "Jony", "Smith" et "example-free@wpdevelop.com" de cette ligne:

    text^name1^Jony~text^secondname1^Smith~text^email1^example-free@wpdevelop.com~
    J'ai fait comme ça: preg_match_all ('/\^(.*?)\~/', $row['form'], $res);

    Et j'obtiens ça pour le prénom: ^name1^Jony~
    pour le nom: ^secondname1^Smith~
    etc.

    Il n'y a que le mot "text" qui disparait. Pourriez-vous me dire ce qui ne vas pas dans mon expression régulière?

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Tu demandes à chercher une chaine comprise entre les caractères ^et ~.

    Par défaut, la regex va chercher la plus grande chaîne possible qui correspond à cette recherche, ce qui est le cas pour ^name1^Jony~

    Pour résoudre le problème, il suffit de dire que la chaîne que tu recherches ne doit pas contenir de ^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/\^([^\^\.]*?)\~/', $row['form'], $res);

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Autre possibilité : utiliser le modificateur U (ungreedy) qui te retournera la plus petite expression possible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all ('/\^(.*?)\~/U', $row['form'], $res);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ça sort d’où ta chaine ?

  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 : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    ça sort d’où ta chaine ?
    C'est vrai qu'on dirait qu'elle est construite spécialement pour complexifier une regex d'extraction...

    Mais tu peux essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $str = 'text^name1^Jony~text^secondname1^Smith~text^email1^example-free@wpdevelop.com~ ';
     
    preg_match_all('/ \^ [^\^]+ \^ ([^~]+) ~ /x', $str, $match);
     
    var_dump($match[1]);

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2008, 18h24
  2. Extraire nom de fichier du chemin
    Par kalou26 dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2006, 14h23
  3. Réponses: 6
    Dernier message: 14/06/2006, 15h27
  4. extraire nom fichier (opendialog)
    Par jmjmjm dans le forum Delphi
    Réponses: 3
    Dernier message: 25/05/2006, 17h52
  5. [VB] Nom & Prénom : extraire Nom
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/12/2005, 12h02

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