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

Langages Discussion :

Expression régulière : Supprimer le code HTML sauf les balises <a


Sujet :

Langages

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Expression régulière : Supprimer le code HTML sauf les balises <a
    Bonjour à tous,

    J'ai besoin de votre aide pour compléter une expression régulière que je suis en train de faire.
    Le but est de récupérer le contenu d'un flux Rss en supprimant les balises HTML qui sont contenus dans la balise <description> parfois afin de garder la main sur la mise en forme.
    J'y suis parvenu avec cet regex : "<[^>]*>"

    Mais si dans cette balise <description> il y a des liens hypertextes (<a href='...'>bla bla</a>) je souhaiterais les conserver.

    Comment puis-je modifier mon expression régulière ?

    Merci par avance pour votre aide

    p.s : exemple d'un flux google utilisé pour mes tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <description>
    <table border="0" cellpadding="2" cellspacing="7" style="vertical-align:top;"><tr><td width="80" align="center" valign="top"><font style="font-size:85%;font-family:arial,sans-serif"><a href="http://www.lefigaro.fr/conjoncture/2012/04/25/20002-20120425ARTFIG00462-europe-draghi-reclame-un-pacte-de-croissance.php">Le Figaro</a></td></tr></table>
    </description>

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Pour parser du HTML on utilise un parseur HTML pas des expressions rationnelles.
    Tu peux utiliser le HtmlAgilityPack

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Pour parser du HTML on utilise un parseur HTML pas des expressions rationnelles.
    Tu peux utiliser le HtmlAgilityPack
    Je prend note du lien au cas où.

    Mais pour des raisons indépendantes de ma volonté, je n'ai pas d'autres choix que d'utiliser une regex.

    Il n'y a pas de solutions pour inclure une clause "sauf les balises <a" dans mon expression ?

  4. #4
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Plutôt que d'essayer de supprimer tout le reste, ça ne serait pas plus simple de récupérer uniquement les balises en question?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Plutôt que d'essayer de supprimer tout le reste, ça ne serait pas plus simple de récupérer uniquement les balises en question?
    Tu as raison et c'est ce que j'essaye de faire actuellement mais j'ai encore un peu de mal avec les expressions régulières.

    J'ai décidé de conserver uniquement les balises <a> et <b> et <br>

    J'arrive donc à récuperer toutes les balises commençant par a ou b en faisant ceci :
    <[^a|b][^>]*>

    mais j'ai désormais du mal à lui dire de conserver également les balises fermantes.

  6. #6
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

Discussions similaires

  1. [RegEx] Tout compter sauf les balises HTML
    Par ProgVal dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2009, 14h31
  2. expression régulière : supprimer un mot et tous ce qui le suit
    Par mehdiing dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/04/2008, 12h00
  3. Réponses: 3
    Dernier message: 21/05/2007, 17h34
  4. supprimer le code html d'une chaîne String
    Par adrien.nicolet dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2006, 18h08
  5. Réponses: 4
    Dernier message: 24/08/2005, 18h40

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