-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[4] Come rimuovo i tag HTML presenti in una stringa?

La via più corretta (benché non la più veloce) consiste nell'usare HTML::Parser da CPAN. Un'altra via abbastanza corretta consiste nell'usare HTML::FormatText, che non solo rimuove i tag HTML ma tenta anche di applicare un minimo di semplice formattazione al normale testo che ne risulta.

Molti tentano un approccio sciocco tramite le espressioni regolari, come s/<.*?//g>, ma questo fallisce in molti casi poiché i tag possono continuare sulla riga successiva, possono contenere parentesi angolari tra apici, oppure potrebbe essere presente un commento HTML. Inoltre, spesso queste persone si dimenticano di convertire le entità, come ad esempio &lt;.

Ecco un approccio "sciocco", che funziona con la maggior parte dei file:

    #!/usr/bin/perl -p0777
    s/<(?:[^>'"]*|(['"]).*?\1)*>//gs

Se ciò che volete è una soluzione più completa, date un'occhiata al programma striphtml all'indirizzo http://www.cpan.org/authors/Tom_Christiansen/scripts/striphtml.gz .

Ecco alcuni casi ingannevoli, ai quali dovete prestare attenzione al momento di scegliere una soluzione:

    <IMG SRC = "pippo.gif" ALT = "A > B">
    <IMG SRC = "pippo.gif"
         ALT = "A > B">
    <!-- <Un commento> -->
    <script>if (a<b && a>c)</script>
    <# Solo dati #>
    <![INCLUDE CDATA [ >>>>>>>>>>>> ]]>

Se i commenti HTML includono altri tag, queste soluzioni non funzioneranno nemmeno con testi come questo:

    <!-- Questa sezione e` commentata.
        <B>Non puoi vedermi!</B>
    -->

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google