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 :

Substitution multiligne html


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut Substitution multiligne html
    Bonjour ,

    J'ai un petit soucis en ce qui concerne la substitution multiligne dans un fichier html.
    J'ai par exemple mon fichier html qui contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <style type='text/css'>
     
    		.bdhautstyle {
    		background-image: url(./architect/img/bd_recherche.jpg);
    		}
     
    </style>
    et je voudrais pouvoir supprimer cette balise en entier

    voici mon code perl actuel :il me supprime bien les balises <div> etc vu qu'elles sont sur une seule ligne mais quand c'est sur plusieurs je ne sais pas comment l'écrire (je suis débutante en perl)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #!/usr/bin/perl
     
    if (open (FD, $ARGV[0])) {
        undef $/;
        $lignes = <FD>;
        #print $lignes;
        $lignes =~ s|<div.*?>||g;
        $lignes =~ s|</div>||g;
        $lignes =~ s|<span.*?>||g;
        $lignes =~ s|</span>||g;
        $lignes =~ s|<form.*?>||g;
        $lignes =~ s|</form>||g;
        $lignes =~ s|<input.*?>||g;
        $lignes =~ s|</input>||g;
        $lignes =~ s|<select.*?>||g;
        $lignes =~ s|</select>||g;
        $lignes =~ s|<option.*?>||g;
        $lignes =~ s|</option>||g;
        $lignes =~ s|<h[1-9].*?>||g;
        $lignes =~ s|</h[1-9].*?>||g;
        $lignes =~ s|<meta.*?>||g;
        $lignes =~ s|<style.*?>.*?</style>/m||g;
        $lignes =~ s|<script.*?>.*?</script>||g;
        $lignes =~ s|<link.*?>||g;
        $lignes =~ s|<!--.*?-->||g;
     
        print $lignes;
    }
    Je vous remercie d'avance
    Bonne Journée

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Pour parser des fichiers HMTL, il est conseillé d'utiliser un module déjà fait pour ça car à coup de regex, tu ne t'en sortira pas. Je te conseil le module HTML::Parser

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut
    Est ce qu'il y a un tutoriel ou quelque chose qui puisse m'aider a utiliser HTML:Parser car ca me parait un petit peu obscur :?

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Il faut lire la documentation du module .
    Sinon voici un post où on en parle un peu et voici un article des mongueurs sur ce sujet.

    bonne lecture

  5. #5
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut
    Merci ..
    Est ce que tu saurais pas seulement comment écrire mon problème avec perl tout simple? car avec mon fichier j'arrive à avoir ce que je désire et jai pas trop le temps de regarder en détail un nouveau module :s

    j'ai essayer cela mais ca marche pas :
    $lignes =~ s|<script.*?>.*?</script>||m;
    $lignes =~ m|<script.*?>.*?</script>||m;

    J'ai lu qu'il fallait un m pour faire multilignes mais ...

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Dans ton cas, je dirais que c'est plutôt l'option s que tu cherches à utiliser, à savoir faire en sorte que . "matche" également \n, au lieu de l'option m, qui n'a d'effet que sur ^ et $ (voir perldoc perlre, paragraphe Modifiers).

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/11/2011, 10h38
  2. Mode multiligne pour le contôle HTML editor
    Par stefsas dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 17/06/2010, 16h08
  3. problème substitution des balises html
    Par julie31 dans le forum Langage
    Réponses: 2
    Dernier message: 09/03/2009, 22h00
  4. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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