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 :

matcher 2 champs dans du html [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Janvier 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut matcher 2 champs dans du html
    Je cherche a extraire noms de fichier image + titres dans un gros fichier html.
    C'est du sed en shellscript, mais bon, une regexp est une regexp :-)

    voici l'expression à laquelle je suis parvenu, sur une courte chaine d'exemple, mais ça ne marche pas:
    echo '(path/yac5cxfjm1.png)"></span><xxx><yyy>le titre</span>' | sed 's#/\([0-9a-z]*\).png)"></span>\([!>]*\)>\([!>]*\)>\([!<]*\)#@ FILE:\1 TITLE:\4/a%\n#g'

    visiblement le probleme se situe au premier '>':
    s#/\([0-9a-z]*\).png)"></span>\([!>]*\) matche mon exemple, mais pas
    s#/\([0-9a-z]*\).png)"></span>\([!>]*\)>

    une idee du soucis ?
    (NB: c'est pas une question d'echappement de ! et > , j'ai déjà testé)
    NB: j'en suis venu a matcher explicitement chaque <...> entre mes 2 champs visés (nom et titre), parceque \(.*\) essayé auparavant semble faire un match maximaliste et non minimaliste.

    merci !

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    C'est du sed en shellscript, mais bon, une regexp est une regexp :-)
    C'est bien naïf! Déjà sed ne dispose pas juste de s/// pour faire des remplacements à l'aide d'une regex, mais d'une bonne quinzaine de commandes diverses et variées. D'autre part les regex PHP (tu es sur le forum PHP) et celles utilisées par sed sont quand même très différentes tant sur le point de la syntaxe, des possibilités que du comportement. À vrai dire tu aurais plutôt du poser ta question sur les sous-forums concernant les commandes shell.

    Maintenant l'extraction de données à partir d'un langage structurée comme le html se fait avec un parser html, pas avec des regex. Si tu tiens à le faire via la ligne de commande, je te conseille d'utiliser xidel qui est un véritable couteau suisse, ou bien avec xmlint, sinon tu peux te tourner vers n'importe quel autre langage (dont PHP) qui te fournira le parser en question (en natif ou via un module).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Janvier 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci pour ta réponse !
    Citation Envoyé par CosmoKnacki Voir le message
    C'est bien naïf! Déjà sed ne dispose pas juste de s/// pour faire des remplacements à l'aide d'une regex, mais d'une bonne quinzaine de commandes diverses et variées.
    S'il y a mieux comme approche avec sed, je suis toujours preneur ! :-)

    Citation Envoyé par CosmoKnacki Voir le message
    D'autre part les regex PHP (tu es sur le forum PHP) et celles utilisées par sed sont quand même très différentes tant sur le point de la syntaxe, des possibilités que du comportement. À vrai dire tu aurais plutôt du poser ta question sur les sous-forums concernant les commandes shell.
    Argh, google m'a mené ici, et je pensais n'utiliser que des regex bien standard (au detail pres de ce qui doit etre echappé ou non selon les idiomes).
    Ok, je tente ma chance dans le forum shell, mais comme c'est pas spécialisé regex, ça risque de partir dans tout les sens.

    Citation Envoyé par CosmoKnacki Voir le message
    Maintenant l'extraction de données à partir d'un langage structurée comme le html se fait avec un parser html, pas avec des regex. Si tu tiens à le faire via la ligne de commande, je te conseille d'utiliser xidel qui est un véritable couteau suisse, ou bien avec xmlint, sinon tu peux te tourner vers n'importe quel autre langage (dont PHP) qui te fournira le parser en question (en natif ou via un module).
    Certes, mais ce cas précis (parser du html) je l'ai rarement, alors que bien comprendre sed et les regex m'est potentiellement utile dans 1001 autre cas. Je préfère bien maitriser qq outils plutot que devoir recourir a un nouvel outil a chaque nouveau probleme. Par ailleurs dans ce cas précis je compte diffuser le script a d'autres usagers qui en auraient le meme besoin (sur un site tiers qui a oublié de prévoir qu'on puisse vouloir faire des backup), donc mieux vaut que ça n'utilise que des outils deja présent en standard.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Janvier 2017
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ai médi : ça a été promptement résolu dans le sous-forum shell, ici http://www.developpez.net/forums/d16...cher-2-champs/ . :-)

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

Discussions similaires

  1. Injecter du HTML avec des champs dans un formulaire
    Par Ceubex dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/12/2012, 17h55
  2. vérification champs vide dans array html
    Par knebhi dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/07/2009, 16h08
  3. Ajout d'un texte a partir d'un champ de la table dans le html
    Par nidhou dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 30/04/2008, 14h44
  4. [HTML] 1 meme champ dans 2 formulaires d'une meme page?
    Par loopx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/02/2008, 02h09
  5. Réponses: 1
    Dernier message: 03/12/2005, 15h44

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