Подтвердить что ты не робот

Как я могу кодировать строку для HTML?

Я ищу простой способ HTML кодировать строку/объект в Perl. Чем меньше дополнительных пакетов, тем лучше.

4b9b3361

Ответ 1

HTML::Entities - ваш друг здесь.

use HTML::Entities;
my $encoded = encode_entities( "foo & bar & <baz>" );

Ответ 2

Когда на этот вопрос был дан первый ответ, HTML::Entities был модулем, который, вероятно, использовал большинство людей. Это чистый Perl и по умолчанию будет скрывать зарезервированные символы HTML ><'"& и широкие символы.

В последнее время появилось HTML::Escape. Он имеет как XS, так и чистый Perl. Если вы используете версию XS, это примерно в десять раз быстрее, чем HTML::Entities. Однако он избегает ><'"& и не имеет возможности изменить значения по умолчанию. Здесь разница с версией 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)

И здесь честный бой с чистыми версиями Perl с каждой стороны:

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)

Вы можете получить эти тесты в Surveyor::Benchmark::HTMLEntities. Я объясняю как распространять тесты, используя Surveyor::App.

Ответ 3

Что вам нужно для кодирования, строки или объекта? Если это просто строка, вам просто нужно будет беспокоиться о проблемах с кодировкой, таких как UTF-8, и CGI:: escape, вероятно, сделает трюк для вас. Если это объект, вам нужно сначала его сериализовать, что открывает целый ряд проблем, но вы можете рассмотреть JSON -кодирование.

PS. Хотя я не могу найти недавнюю документацию по этому методу (она фактически импортирована из CGI::Util и помечена как "внутренняя" ), вы должны, вероятно, использовать escapeHTML(), поскольку daxim указывает в своем комментарии: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML