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 :

Regexp > Récupérer la nième <option> d'un <select id="x"> [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut Regexp > Récupérer la nième <option> d'un <select id="x">
    Bonjour,

    Je n'arrive pas à récupérer la nième option d'un select sachant que mon HTML est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select id="1">
    <option....
    <option....
    <option....
    </select>
    <select id="2">
    <option....
    <option....
    <option....
    </select>
    et que je souhaite choisir une option du <select id="2"> sans avoir d'autres info que sa position (1er, 2ème...nième).

    Voici l'expression régulière de base de j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="(.*?)".+?>.*?</option>
    ==> Me renvoi les options des 2 select

    Voici ce que j'ai essayé et qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="2">.+?<option value="(.*?)".+?>.*?</option>
    ==> Seule la 1ère occurrence peut être récupérée

    Help, je n'ai rien trouvé malgré mes recherches !

    Sylvain

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Il s'agit de manipuler le DOM, pas besoin d'expression régulière.

    Si tu connais un peu les sélecteur JQuery, je te conseiller de regarder ici : http://simplehtmldom.sourceforge.net/

    Ensuite il te suffira de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $html->find('select#2 option')
    Ou si tu veux vraiment un élements particulier (exemple ici de la 6ème option :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $html->find('select#2 option', 5)
    5, car il s'agit d'un index de tableau, donc il commence par 0.
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse.

    En fait, dans mon cas, je n'ai pas vraiment accès au js donc pas à jQuery.

    Par contre je peux utiliser du xpath.

  4. #4
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    simplehtmldom est une class PHP qui reprend les selecteur JQuery.
    Tu n'as pas besoin de JS justement pour l'utiliser.

    Mais si tu connais déjà un peu, c'est vraiment magique.

    pour ton code ça serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $html = "<select id="1">
    <option....
    <option....
    <option....
    </select>
    <select id="2">
    <option....
    <option....
    <option....
    </select>";
    $option_6 = $html->find('select#2 option', 5);
    echo $option_6->innertext; // (ou ->outertext selon comme tu veux le récupérer)
    ?>
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Sinon j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="2">.*?<option value="(.*?)".+?>.*?</option>
    Qui me renvoi la 1ère option du second select, je ne suis pas si loin...

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Désolé alors je ne pourrais t'aider, c'est trop bancale...
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    simplehtmldom est une class PHP qui reprend les selecteur JQuery.
    Tu n'as pas besoin de JS justement pour l'utiliser.
    Je sais que c'est bien jquery

    Mais là je dois utiliser au choix :
    - Le moteur de regex ORO
    - XPath

  8. #8
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    En fait, dans mon cas, je n'ai pas vraiment accès au js donc pas à jQuery.
    simplehtmldom est une class PHP
    - Le moteur de regex ORO
    - XPath
    Les deux ne sont pas fait pour ça...

    Dans un exemple de la vie courrante, pourquoi aller bosser en hélicoptère quand il s'agit de faire 1km à pied pour y être ? (Le moteur de regex ORO)

    Et pour XPath, ça serait plutot : pourquoi utiliser un tracteur tondeuse pour faire la vaisselle...
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Les deux ne sont pas fait pour ça...

    Dans un exemple de la vie courrante, pourquoi aller bosser en hélicoptère quand il s'agit de faire 1km à pied pour y être ? (Le moteur de regex ORO)

    Et pour XPath, ça serait plutot : pourquoi utiliser un tracteur tondeuse pour faire la vaisselle...
    Bref, tu connais pas les expressions régulières...

    Merci d'avoir essayé de répondre à mon problème.

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Les deux ne sont pas fait pour ça...

    Dans un exemple de la vie courrante, pourquoi aller bosser en hélicoptère quand il s'agit de faire 1km à pied pour y être ? (Le moteur de regex ORO)

    Et pour XPath, ça serait plutot : pourquoi utiliser un tracteur tondeuse pour faire la vaisselle...
    Résolu avec xpath en 5 minutes...

    @+

  11. #11
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Via WIKI :

    XPath est un langage (non XML) pour localiser une portion d'un document XML. Initialement créé pour fournir une syntaxe et une sémantique aux fonctions communes à XPointer et XSL, XPath a rapidement été adopté par les développeurs comme langage d'interrogation simple d'emploi.
    Cible du code HTML...

    Et pour XPath, ça serait plutot : pourquoi utiliser un tracteur tondeuse pour faire la vaisselle...

    Tout les points du mauvais développeur :
    - Fait en 5min, avec des mauvaises méthodes.
    - Ne pas pouvoir s'adapter à une class

    Sur ce, code bien
    Si ton message est résolu, il y a un bouton qui est fait pour ça :
    Il se trouve tout en bas de la conversation !

    N'oublie pas que si ce message t'as aidé, tu peux voter pour lui en utilisant

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Si tu le dis...

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

Discussions similaires

  1. regexp pour récupérer tous les liens et leur contenu
    Par beyo dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/02/2012, 21h13
  2. Comment récupérer le nième fils ?
    Par Linkw3b dans le forum jQuery
    Réponses: 4
    Dernier message: 06/05/2011, 22h33
  3. [AC-2007] Récupérer les OnAction des options d'une CommandBar
    Par Fourvin dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/07/2010, 12h37
  4. Récupérer le Nième élément d'une liste chaînée
    Par decoy Octopus dans le forum Pascal
    Réponses: 3
    Dernier message: 03/11/2006, 18h03
  5. Réponses: 1
    Dernier message: 09/10/2006, 21h31

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