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 <.
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>
-->
|