Tôi đang tìm một cách đơn giản để mã hóa HTML một chuỗi/đối tượng trong Perl. Các gói bổ sung ít được sử dụng tốt hơn.Tôi làm cách nào để mã hóa chuỗi cho HTML?
Trả lời
HTML::Entities là bạn của bạn ở đây.
use HTML::Entities;
my $encoded = encode_entities("foo & bar & <baz>");
Bạn cần mã hóa, chuỗi hoặc đối tượng nào? Nếu nó chỉ là một chuỗi, sau đó bạn chỉ cần phải lo lắng về các vấn đề mã hóa như UTF-8, và CGI::escape có thể sẽ làm các trick cho bạn. Nếu đó là một đối tượng, trước tiên bạn sẽ cần serialize nó, mở ra một tập hợp các vấn đề hoàn toàn mới, nhưng bạn có thể muốn xem xét JSON-mã hóa nó.
PS. Mặc dù tôi không thể tìm thấy bất kỳ tài liệu nào gần đây về phương pháp này (nó thực sự được nhập từ CGI::Util và được đánh dấu là "nội bộ"), bạn có thể sử dụng escapeHTML() như daxim chỉ ra trong nhận xét của mình: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML
Hàm này được gọi là 'escapeHTML'. Liên kết sâu thích hợp: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML – daxim
@daxim: 'CGI :: escape' tồn tại rất nhiều; nó thực sự được định nghĩa trong CGI :: Util và được nhập vào CGI phù hợp. Nếu bạn nhìn vào nguồn có một số khác biệt tinh tế trong việc thực hiện, điều đáng buồn là không được mô tả rõ trong tài liệu. – Ether
Được rồi. Tôi không thể hoàn tác phiếu bầu vì nó quá cũ. – daxim
Khi điều này câu hỏi đầu tiên được trả lời, HTML::Entities là mô-đun mà hầu hết mọi người có thể đã sử dụng. Đó là Perl tinh khiết và theo mặc định sẽ thoát khỏi các ký tự dành riêng cho HTML ><'"&
và các ký tự rộng.
Gần đây, HTML::Escape xuất hiện. Nó có cả XS và Perl tinh khiết. Nếu bạn đang sử dụng phiên bản XS, nhanh hơn khoảng 10 lần so với HTML::Entities. Tuy nhiên, nó chỉ trốn thoát ><'"&
và không có cách nào để thay đổi các giá trị mặc định. Đây là sự khác biệt với phiên bản 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)
Và đây là cuộc đấu tranh công bằng với các phiên bản Perl tinh khiết mỗi bên:
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)
Bạn có thể có được những tiêu chuẩn trong Surveyor::Benchmark::HTMLEntities. Tôi giải thích how I distribute benchmarks sử dụng Surveyor::App.
Với thực tế là 'HTML :: Entities' cũng tìm kiếm các ký tự rộng, cuộc chiến Perl thuần túy có thể không công bằng. Nó có thể là thú vị để thay đổi mã trong phiên bản Perl thuần túy của 'HTML :: Escape' để bao gồm các trường hợp tương tự theo thuật toán riêng của nó và thấy rằng chiến đấu một lần nữa. –
- 1. Chuỗi mã hóa Json HTML
- 2. Làm cách nào để giải mã chuỗi mã hóa base64?
- 3. Làm cách nào để xóa các ký tự được mã hóa HTML khỏi chuỗi?
- 4. Tôi làm cách nào để mã hóa url bằng Python?
- 5. Tôi làm cách nào để tối ưu hóa mã này?
- 6. Làm cách nào để mã hóa chuỗi này trong Ruby?
- 7. Làm cách nào để mã hóa chuỗi Dart trong base64?
- 8. Tôi làm cách nào để mã hóa url trong XSLT?
- 9. Tôi làm cách nào để mã hóa Android bằng J2ME?
- 10. Làm cách nào để chỉ định mã hóa cho fileinput
- 11. Làm cách nào để mã hóa/giải mã các thực thể HTML trong Ruby?
- 12. Mã hóa chuỗi Android và thực thể html chuyển đổi
- 13. Làm cách nào để tôi biết DOMDocument-> load() mã hóa nào tôi muốn sử dụng?
- 14. Làm thế nào để mã hóa một chuỗi trong .NET?
- 15. Làm cách nào để chuyển đổi chuỗi thành mã băm mã màu html?
- 16. Phím tắt cho Notepad ++ để Mã hóa HTML dễ dàng
- 17. Làm cách nào để mã hóa URL?
- 18. Làm cách nào để mã hóa/giải mã chuỗi ngắn thành Base64 bằng GWT?
- 19. Cách xử lý mã hóa trong lxml để phân tích cú pháp chuỗi html đúng cách?
- 20. MvcHtmlString.ToHtmlString() không mã hóa HTML?
- 21. ModelState.AddModelError mã hóa HTML
- 22. Làm cách nào để mã hóa chuỗi trong mã QR bằng zxing trên Android?
- 23. Làm cách nào để mã hóa đúng liên kết mailto?
- 24. Làm cách nào để mã hóa các mã ký tự Unicode trong chuỗi ký tự PowerShell?
- 25. Mã hóa HTML trước POST
- 26. Giải mã mã hóa HTML C# MVC4
- 27. Tôi làm cách nào để sử dụng Gói nhanh nhẹn HTML để chỉnh sửa đoạn mã HTML
- 28. JsonResult với mã hóa Html
- 29. Html bên trong XML. Tôi có nên sử dụng CDATA hoặc mã hóa HTML
- 30. EF MVC RAZOR: Cách giải mã các chuỗi được mã hóa HTML của đầu ra PartialView?
Chính xác bạn có ý nghĩa gì với "HTML encode"? Bạn có thể đưa ra một ví dụ đầu vào và đầu ra mong muốn? – cjm
Bạn cần xử lý bộ ký tự/ngôn ngữ nào? – pilcrow