Comment puis-je bande HTML dans une chaîne de caractères à l'aide de Perl?
Est-il de toute façon de plus facile que cela à bande de HTML à partir d'une chaîne à l'aide de Perl?
$Error_Msg =~ s|<b>||ig;
$Error_Msg =~ s|</b>||ig;
$Error_Msg =~ s|<h1>||ig;
$Error_Msg =~ s|</h1>||ig;
$Error_Msg =~ s|<br>||ig;
Je appreicate la fois allégée expression régulière, par exemple, quelque chose comme ceci:
$Error_Msg =~ s|</?[b|h1|br]>||ig;
Est il un fonction Perl que des bandes de tout/tout le code HTML à partir d'une chaîne, même si j'ai seulement besoin de gras, h1-têtes et br dépouillé?
OriginalL'auteur ParoX | 2009-07-01
Vous devez vous connecter pour publier un commentaire.
En supposant que le code HTML valide (pas de parasite < ou > les opérateurs)
Si vous avez besoin de supprimer uniquement des caractères gras, h1 et br
Et vous pourriez envisager de l' HTML::Bande module
Méfiez-vous de HTML::Bande ne prend pas en charge correctement codé en UTF-8 cordes. Voir ici pour une solution de contournement gist.github.com/910818
OriginalL'auteur Abhinav Gupta
Vous devriez vraiment avoir un coup d'oeil à la HTML::Restreindre l' qui vous permet de supprimer ou de restreindre la balise HTML autorisée. Un exemple minimal qui supprime toutes les balises HTML:
Je vous recommande de rester à l'écart de HTML::Bande, car il rompt l'encodage utf8.
Il ne fonctionne pas avec Perl 5.8.x. C'est un super programme, mais il serait bon de savoir ce que sa structure de support est.
Aussi, je ne sais pas si il existe un moyen de laisser les balises (possibilité de tags) qui n'ont pas d'ouvrir et de fermer les balises. Exemple '<br/>' est difficile à identifier.
OriginalL'auteur Juan A. Navarro
De perlfaq9: Comment puis-je supprimer le code HTML d'une chaîne de caractères?
La plus correcte (mais pas le plus rapide est d'utiliser le HTML::Parser du CPAN. Un autre surtout bonne façon est d'utiliser de l'HTML::FormatText qui non seulement élimine HTML mais tente aussi de faire un peu de simple mise en forme du texte brut obtenu.
Beaucoup de gens tentent un simple d'esprit expression régulière approche, comme s/<.*?>//g, mais qui ne parvient pas, dans de nombreux cas, parce que les étiquettes peut se poursuivre sur les sauts de ligne, ils peuvent comporter des cotés de l'angle de supports ou de commentaire HTML peuvent être présents. De Plus, les gens oublient de convertir les entités-comme < par exemple.
Voici une "simple d'esprit", qui fonctionne pour la plupart des fichiers:
Si vous voulez une solution plus complète, voir le 3-étape striphtml programme http://www.cpan.org/authors/id/T/TO/TOMC/scripts/striphtml.gz .
Voici quelques délicate cas que vous devez penser lors de la cueillette une solution:
Si les commentaires HTML inclure d'autres balises, ces solutions seront également pause sur ce texte:
OriginalL'auteur brian d foy