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

Web Perl Discussion :

Regexp : nettoyer du HTML, mais pas toutes les balises


Sujet :

Web Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Regexp : nettoyer du HTML, mais pas toutes les balises
    Alors je vous expose mon problème.

    J'ai toujours tendance à penser "bah, ça sera tout simple comme problème", et je change vite d'avis .

    Je bosse depuis plusieurs heures sur une regexp qui pourrait me permettre de nettoyer (entendons par là débaliser) une page HTML.
    Jusque là, rien de bien méchant :
    Avec quelques petites modifications, mais l'idée est là.

    Maintenant, je veux faire la même chose mais en conservant quelques balises comme le gras et l'italique.
    Et pour compliquer le tout, je cherche à ce que l'ordre soit conservé.

    J'avais pensé à :
    Mais le problème est que toute balise qui contient 'b' ou 'i' (comme <base> par exemple) sera conservée par la même occasion.

    Je n'aurais pas demandé votre aide si je n'avais pas passé mon après-midi dessus (entre autres).

    Merci d'avance!

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Essaie de préciser les balises à traiter ou à ignorer, en utilisant des groupes, par exemple :

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # la balise peut commencer par / ou pas, selon que c'est une balise de fermeture ou d'ouveture
    # on veut remplacer soit une séquence "b", soit "i", soit "br"
    s/<\/?((b)|(i)|(br))>//g


    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La "meilleure" solution (ou du moins la plus évolutive) serait d'en passer par un parser HTML.

    --
    Jedaï

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui évidemment, le parser HTML serait la solution, mais j'aurais bien aimé ne pas avoir à m'en servir (ne me demandez pas pourquoi je ne sais pas vraiment ).

    Merci pour vos réponses.

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par Henny
    J'avais pensé à :
    Mais le problème est que toute balise qui contient 'b' ou 'i' (comme <base> par exemple) sera conservée par la même occasion.
    La solution est de faire le remplacement dans deux cas :
    - si la balise commence par <[^bi]
    - si la balise commence par <[bi] non-suivi de >

    Par ailleurs, il faut ajouter l'insensibilité à la casse /i et prévoir de conserver aussi </b> et </i>. Au total, j'obtiens ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     s/(<\/?([^\/bi]|[bi][^>]).*?>)/ /gi ;
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Encore merci pour ces réponses.

    Je vais voir ça dès que j'ai le temps.

Discussions similaires

  1. Insertion ligne vide dans une colonne, mais pas toutes les colonnes.
    Par gsekscor dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2013, 22h33
  2. Réponses: 3
    Dernier message: 10/11/2011, 10h38
  3. [Débutant] écrire dans excel mais pas toutes les lignes
    Par lauri-anne dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/07/2010, 11h35
  4. Patcher le noyau mais pas toutes les bases
    Par scheu dans le forum Administration
    Réponses: 4
    Dernier message: 16/10/2007, 19h06

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