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 d'expression régulière [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut Problème d'expression régulière
    Bonsoir,

    J'aimerais récupérer une information (pseudo) dans une ligne du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href='lien'>pseudo</a></td>
    où 'pseudo' peut éventuellement contenir des balises img. J'utilise, avec la fonction preg_match, l'expression régulière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#<td><a href='lien'>(.*)</a></td>#Ui"
    Ca marche dans certains cas, mais pas tous je ne comprends pas pourquoi En fait j'aurais besoin d'une expression régulière du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#<td><a href='lien'>([tout ce qui n'est pas </a>])</a></td>#i"
    Quelqu'un pourrait-il m'aider s'il vous plaît ? Merci beaucoup par avance !

  2. #2
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    est-ce que les sous-chaines recherchées ont un href contenant seulement le mot lien? pourrais-tu fournir un exemple de chaine source?

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Déja je dirais que ton code m'étonne car les / bugguent souvent si tu ne les échappe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#<td><a href='lien'>(.*)<\/a><\/td>#Ui"
    Apres, je te conseillerai d'ajouter l'option 's' à la fin car le . ne gere pas les retour à le ligne par exemple ce qui peux arriver dans un code html ^^

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut
    Non les href peuvent différer, j'avais mis "lien" pour simplifier car je ne pense pas que le problème vienne de là, mais sait-on jamais...Voici un exemple de chaîne pour laquelle ça se passe mal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="main.php?page=5;1;3;1;0&p2=11476" target=_BLANK><img src="http://90plan.ovh.net/~kramages/smileys/3D.gif" alt="" align=middle border=0> MrWeb <img src="http://90plan.ovh.net/~kramages/smileys/69.gif" alt="" align=middle border=0></a></td>
    Et la regex utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<td><a href="main.php\?page=5;1;3;1;0&p2=([0-9]+)" target=_blank>(.+)</a></td>#is'
    Le résultat donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.kraland.org/main.php?page=5;1;3;1;0&p2=11476" target=_BLANK ><img src="http://90plan.ovh.net/~kramages/smileys/3D.gif" alt="" align=middle border=0> MrWeb <img src="http://90plan.ovh.net/~kramages/smileys/69.gif</a></td>
    Pour les /, je ne savais pas (je n'ai jamais eu de message d'erreur), je vais essayer et vous tiens au courant ! En tous cas merci à vous d'essayer de m'aider !

  5. #5
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Personnelement je suis obligé d'en mettre mais je vois qu'ici personne ne semble en mettre je suis étonné mais bon

    Donne un exemple de chaine qui va pas. Donne le résultat attendu et le résultat obtenu (donc celui qui ne convient pas) ^^

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Korko Fain
    Déja je dirais que ton code m'étonne car les / bugguent souvent si tu ne les échappe pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#<td><a href='lien'>(.*)<\/a><\/td>#Ui"
    Ils n'ont pas à l'être car ce ne sont pas des métacaractères, bien évidemment il y a une exception : une utilisation de ceux-ci comme délimiteurs de l'expression régulière.

  7. #7
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Jme doute bien mais va comprendre ^^ Jmet toujours des # en délimiteurs mais il bug si je met des / simples ^^

  8. #8
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut
    Vous promettez de ne pas m'injurier...? L'expression régulière marche très bien, seulement j'enregistrais le résultat en BDD dans un champ VARCHAR(150) alors que le pseudo pouvait dépasser les 150 caractères

    J'ai vraiment honte de moi sur ce coup ! Merci à vous et désolé de vous avoir fait perdre un peu de votre temps !

  9. #9
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Sa arrive

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

Discussions similaires

  1. petit problème d'expression régulière
    Par stoyak dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2006, 11h20
  2. [regexp] petit problème d'expression régulière
    Par LE NEINDRE dans le forum Langage
    Réponses: 14
    Dernier message: 16/12/2005, 10h33
  3. Problème d'expression régulière
    Par SiM07 dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 17h57
  4. Problème d'expression régulière
    Par Pymm dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 11/10/2005, 15h04
  5. Problème d'expression régulière
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 11/08/2005, 14h29

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