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 Perl Discussion :

problème regex suppression balises HTML


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut problème regex suppression balises HTML
    Bonjour,

    Je réalise en ce moment un script pour nettoyer du code HTML.
    Je dois supprimer un maximum de code donc j'enlève les balise qui ne servent à rien.
    J'ai un problème pour supprimer des balises vides comme <SPAN>...</SPAN>
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <SPAN style="color: black">Je mange des pommes.</SPAN>
    Je supprime le style qui ne sert à rien (le code ne dois pas forcer la couleur noir), je me retouve donc avec un <SPAN> qui ne sert plus à ren et je voudrai le surpprimer.

    Facile dans ce cas, mais je bloque sur des choses plus complexe, de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <SPAN><SPAN style="color: black">Je mange des <SPAN style="color: rouge">pommes</SPAN>.</SPAN></SPAN>
    (Je dois garder la couleur rouge)
    En fait mon script supprimera d'abors le style color: black, je n'ai qu'a supprimer les span vides.

    Pouvez vous m'aider ?
    Merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    montre nous ce que tu ecris comme code

  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
    Je peux déjà te dire que vu la complexité de tes besoins, tu auras énormément de mal à faire ça avec des regexs et quand je dis énormément...
    Je te conseille plutôt d'utiliser un parser HTML comme HTML:: Parser.

    --
    Jedaï

  4. #4
    Futur Membre du Club
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Pour l'instant mon code ne fait qu'appliquer des remplacements suivant des conditions pour chaques lignes du fichier ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	while($line = <SOURCE>)
    	{ 
    		cleaning();#execute cleaning function
    		print EXIT $line; #print result in the export file
    	}
    Dans la fonction cleaning je supprime les codes nuisible (provenant de word pour la pluspars)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	cleaning()
    	{
    	...
    	$line =~ s#&lt;o:p&gt;##ig;
    	$line =~ s#&lt;/o:p&gt;##ig;
    	$line =~ s#mso-[^:]+:[^;"]+"#"#gi;
    	$line =~ s#FONT-FAMILY:[^;"]*;##ig;
    	$line =~ s#MARGIN:\s0(cm|in)\s0(cm|in)\s0pt\s*;##g;
    	...
    La liste des conditions n'est pas ehaustive j'en ai une trentaine.

    Peux-tu m'en dire plus sur le html::parser ?
    Je ne me suis mis au PERL que depuis quelques semaines pour réaliser ce script

  5. #5
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Pour plus de détails sur HTML:: Parser, lis sa doc sur le CPAN.

    En gros, il s'agit d'un module qui va te permettre de déclencher des actions lors d'évènements particuliers. Par exemple, tu peux dire que dès que le parseur recontre du texte, il sera recopié dans un txt.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Je peux déjà te dire que vu la complexité de tes besoins, tu auras énormément de mal à faire ça avec des regexs et quand je dis énormément...
    Je te conseille plutôt d'utiliser un parser HTML comme HTML:: Parser.
    +1, j'avais un script 100% fait maison qui analysait du code HTML et c'était bien la m***e ... J'avais besoin de le réécrire pour rajouter des fonctionnalités, je l'ai fait avec un module (HTML::TagReader) et ça m'a considérablement facilité le boulot ...

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ok merci de vos indications, je vais me renseigner sur tout ca.

Discussions similaires

  1. [RegEx] REGEX sur balise html: Besoin d'aide !
    Par delphi_jb dans le forum Langage
    Réponses: 11
    Dernier message: 26/07/2012, 16h08
  2. problème substitution des balises html
    Par julie31 dans le forum Langage
    Réponses: 2
    Dernier message: 09/03/2009, 22h00
  3. [JDOM] xpath+jdom+regex ==> suppression balise
    Par fasfousba dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 14/11/2008, 10h27
  4. Problème avec la balise <html:select
    Par rawanex dans le forum Struts 1
    Réponses: 5
    Dernier message: 16/04/2007, 13h28
  5. Suppression balise HTML en Javascript
    Par calahaan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/01/2007, 22h18

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