HTML'de Perl'de bir dize/nesneyi kodlamanın basit bir yolunu arıyorum. Daha az ek paket daha iyiydi.HTML için bir dizeyi nasıl kodlayabilirim?
cevap
HTML::Entities arkadaşın burada. Eğer bir dize veya bir nesneyi kodlamak gerekiyor
use HTML::Entities;
my $encoded = encode_entities("foo & bar & <baz>");
? Sadece bir dize ise, o zaman UTF-8 ve CGI::escape gibi kodlama sorunları hakkında endişelenmeniz gerekir, muhtemelen sizin için hile yapacaktır. Eğer bir nesne ise, önce serileştirmeniz gerekecek, bu da yepyeni bir dizi meseleyi ortaya çıkarır, ancak JSON'u kodlamak isteyebilirsiniz.
PS. Bu yöntemle ilgili herhangi bir yeni belge bulamadığım halde (aslında CGI::Util'dan içe aktarılır ve "internal" olarak işaretlenir), muhtemelen escapeHTML() yöntemini, yorumunda daxim noktaları olarak kullanmanız gerekir: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML
Fonksiyon "escapeHTML" olarak adlandırıldı. Doğru derin bağlantı: http://search.cpan.org/perldoc?CGI#AUTOESCAPING_HTML – daxim
@daxim: "CGI :: escape" çok fazla var; Aslında CGI :: Util'de tanımlanmış ve CGI'ya uygun şekilde aktarılmıştır. Kaynağa bakarsanız, uygulamada ne yazık ki iyi tanımlanmamış bazı ince farklılıklar vardır. – Ether
Tamam. Oylamayı geri alamıyorum çünkü çok yaşlı. – daxim
soru ilk cevaplandı, HTML::Entities muhtemelen en çok kullanılan modül oldu. Bu saf Perl ve varsayılan olarak ><'"&
kodlu HTML karakterleri ve geniş karakterler kaçacaktır.
Son zamanlarda, HTML::Escape ortaya çıktı. Hem XS hem de saf Perl var. XS sürümünü kullanıyorsanız, HTML::Entities'dan yaklaşık on kat daha hızlıdır. Ancak, yalnızca ><'"&
'dan kaçar ve varsayılanları değiştirmenin bir yolu yoktur.
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)
Ve burada her iki tarafta saf Perl sürümleri ile adil bir dövüş: Burada XS sürümü ile fark bu
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)
Sen Surveyor::Benchmark::HTMLEntities yılında bu kriterleri alabilirsiniz. 'u Surveyor::App kullanarak açıklarım.
HTML :: Entities'in de geniş karakterler aradığı göz önüne alındığında, saf Perl dövüşü bu kadar adil olmayabilir. Aynı olayları kendi algoritması altında içermek için 'HTML :: Escape' in saf Perl versiyonundaki kodu değiştirmek ilginç olabilir ve bunu tekrar ele alın. –
- 1. HTML Biçimlendirilmiş Dizeyi Görüntüle
- 2. dize dizisi değişmezi? Nasıl kodlayabilirim?
- 3. Bir dizeyi HTML ile değiştirin XSLT 1.0
- 4. Bir dizeyi
- 5. Bir dizeyi
- 6. Pygame'i nasıl kodlayabilirim ve görüntüyü seçerek nasıl değiştirebilirim?
- 7. XQuery'de bir dizeyi nasıl açıyorsunuz?
- 8. İki dizeyi içermeyen bir dizge için RegEx
- 9. Uluslararasılaştırma için karmaşık bir dizeyi ayrıştırma
- 10. Bir dizeyi Io'deki bir listeye nasıl dönüştürebilirim?
- 11. Sabit biçimdeki bir dizeyi
- 12. İndirmek için bir dosya adını nasıl kodlarım?
- 13. Iki "/" karakterleri arasındaki dizeyi ayıklamak için nasıl
- 14. ARGV doldurmak için kabukların yaptığı bir dizeyi nasıl bölebilirim?
- 15. "\." Üzerindeki bir dizeyi bölmek için awk'deki split işlevini nasıl ararım?
- 16. Python'da bir dizeyi Redis'te saklamak için nasıl sıkıştırılır?
- 17. Dizeyi bir unicode karakterine nasıl dönüştürebilirim?
- 18. Lua'da, URL'de belirli bir dizeyi nasıl bulabilirim?
- 19. Biçimlendirme yer tutucularıyla bir dizeyi nasıl yerelleştirebilirim?
- 20. Qt'deki Ayırıcılara Göre Bir Dizeyi Nasıl Bölünebilirim?
- 21. Bir dizeyi birkaç değerle nasıl karşılaştırabilirim?
- 22. Ortak lisp'de bir dizeyi tamsayıya nasıl dönüştürebilirim?
- 23. İki öznitelik dizeyi bir UILabel'de nasıl birleştiririm?
- 24. Büyük bir dizeyi java'daki tamsayıya nasıl dönüştürebilirim?
- 25. Bir dizeyi make olarak nasıl bölerim?
- 26. Diske gitmeden bir dizeyi FileStream'e nasıl yüklerim?
- 27. Grep kullanarak tam bir dizeyi nasıl arayabilirim?
- 28. Android'de bir dizeyi UTF-8'e nasıl dönüştürebilirim?
- 29. Bir link_to bloğu için html nasıl aktarılır?
- 30. C# Belirli bir dizeyi içermeyen bir dizeyle eşleştirmek için Regex?
"HTML encode" ile tam olarak ne demek istiyorsunuz? Örnek bir giriş ve istenen çıktı verebilir misiniz? – cjm
Hangi karakter kümeleri/yerel ayarlamalar yapmanız gerekiyor? – pilcrow