Je suis à la recherche d'un moyen simple de coder en HTML une chaîne/un objet en Perl. Le moins de paquets supplémentaires utilisés le mieux.Comment puis-je encoder une chaîne pour HTML?
Répondre
HTML::Entities est votre ami.
use HTML::Entities;
my $encoded = encode_entities("foo & bar & <baz>");
De quel code devez-vous encoder, une chaîne ou un objet? Si c'est juste une chaîne, alors vous devriez juste vous soucier des problèmes d'encodage tels que UTF-8, et CGI::escape fera probablement l'affaire pour vous. Si c'est un objet, vous devrez le sérialiser en premier, ce qui ouvre un nouvel ensemble de problèmes, mais vous pouvez envisager de le coder en JSON.
PS. Bien que je ne trouve aucune documentation récente sur cette méthode (elle est importée de CGI::Util et est marquée comme "interne"), vous devriez probablement utiliser escapeHTML() comme le signale daxim dans son commentaire: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML
La fonction s'appelle 'escapeHTML'. Correct profond: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML – daxim
@daxim: 'CGI :: escape' existe beaucoup; c'est en fait défini dans CGI :: Util et importé dans CGI proprement dit. Si vous regardez la source, il y a quelques différences subtiles dans la mise en œuvre, qui malheureusement ne sont pas bien décrites dans la documentation. – Ether
Très bien. Je ne suis pas capable d'annuler le vote parce que c'est trop vieux. – daxim
question a été la première réponse, HTML::Entities était le module la plupart des personnes probablement utilisées. C'est pur Perl et par défaut va échapper les caractères réservés HTML ><'"&
et les caractères larges.
Récemment, HTML::Escape est apparu. Il a à la fois XS et Perl pur. Si vous utilisez la version XS, il est environ dix fois plus rapide que HTML::Entities. Cependant, il échappe seulement ><'"&
et n'a aucun moyen de changer les valeurs par défaut. Voici la différence avec la version XS:
Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (14.09 usr + 0.01 sys = 14.10 CPU) @ 709.22/s (n=10000)
html_escape: 1 wallclock secs (0.68 usr + 0.00 sys = 0.68 CPU) @ 14705.88/s (n=10000)
Et voici la lutte juste avec les versions pures Perl sur chaque côté:
Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (13.79 usr + 0.01 sys = 13.80 CPU) @ 724.64/s (n=10000)
html_escape: 7 wallclock secs (7.57 usr + 0.01 sys = 7.58 CPU) @ 1319.26/s (n=10000)
Vous pouvez obtenir ces points de repère dans Surveyor::Benchmark::HTMLEntities. J'explique how I distribute benchmarks en utilisant Surveyor::App.
Étant donné que 'HTML :: Entities' recherche aussi des caractères larges, le combat pur de Perl n'est peut-être pas si juste. Il pourrait être intéressant de modifier le code dans la version pure de Perl de 'HTML :: Escape' pour inclure les mêmes cas sous son propre algorithme et voir ce combat à nouveau. –
- 1. Comment encoder une chaîne dans Oracle?
- 2. Encoder et décoder une chaîne dans C#
- 3. Comment encoder une URL?
- 4. encoder la chaîne en utf8
- 5. Comment encoder simplement et décoder une variable chaîne
- 6. encoder en toute sécurité et transmettre une chaîne d'un lien html au programme PHP
- 7. Encoder des caractères spéciaux pour Outlook HTML Email
- 8. Java: comment analyser une chaîne html pour l'outil XML consommer?
- 9. Une fonction Javascript intégrée pour encoder '?
- 10. Comment est-ce que je peux encoder html charset webpage de html comme chaîne et non comme dom?
- 11. Comment supprimer tag html dans une chaîne?
- 12. URL-encoder une URL
- 13. Comment encoder une chaîne de requête pour qu'elle soit la valeur d'une autre chaîne de requête en javascript?
- 14. Comment encoder en base 64 la somme md5 d'une chaîne?
- 15. Comment convertir une chaîne html en élément html dom?
- 16. Comment encoder une URL dans Apache mod_rewrite?
- 17. Comment encoder une vidéo en utilisant PHP?
- 18. Comment encoder une clé au format MIME
- 19. Comment encoder correctement une URL en JavaScript?
- 20. Comment encoder une URL en JavaScript?
- 21. Comment encoder XML sur Android?
- 22. Comment encoder un NSDecimal?
- 23. Python peut-il encoder une chaîne pour correspondre à EncodePassword du fournisseur d'appartenance ASP.NET
- 24. Fonction PHP pour encoder des caractères & etc vers des entités HTML correspondantes
- 25. comment encoder une chaîne en javascript ou jquery et la décoder en utilisant php
- 26. Comment est-ce que base64 encoder une chaîne efficacement en utilisant Excel VBA?
- 27. Comment encoder des chaînes comme \ u00d6?
- 28. encoder JSON dans FBJS
- 29. Android encoder la chaîne en tant que bitmap?
- 30. JSON-encoder une liste en utilisant mochiweb
Que voulez-vous dire par "encodage HTML"? Pouvez-vous donner un exemple d'entrée et la sortie désirée? – cjm
Quels jeux de caractères/locales devez-vous gérer? – pilcrow