Saya mencoba memecahkan kode beberapa entitas HTML, seperti '<'
menjadi '<'
.
Saya memiliki permata lama ( html_helpers ) tetapi tampaknya telah ditinggalkan dua kali.
Ada rekomendasi? Saya perlu menggunakannya dalam model.
Saya mencoba memecahkan kode beberapa entitas HTML, seperti '&lt;'
menjadi '<'
.
Saya memiliki permata lama ( html_helpers ) tetapi tampaknya telah ditinggalkan dua kali.
Ada rekomendasi? Saya perlu menggunakannya dalam model.
Jawaban:
HTMLEntities dapat melakukannya:
sumber
HTMLEntities
permata menangani kasus-kasus sepertiå
dan—
yangCGI.unescapeHTML
tidak.Untuk menyandikan karakter, Anda dapat menggunakan
CGI.escapeHTML
:Untuk memecahkan kode mereka, ada
CGI.unescapeHTML
:Tentu saja, sebelum itu Anda perlu memasukkan perpustakaan CGI:
Dan jika Anda menggunakan Rails, Anda tidak perlu menggunakan CGI untuk menyandikan string. Itu
h
metodenya.sumber
Saya pikir permata Nokogiri juga merupakan pilihan yang baik. Ini sangat stabil dan memiliki komunitas yang berkontribusi besar.
Sampel:
atau
sumber
CGI.escapeHTML
mungkin tidak dapat menyelesaikan beberapa kasus. Di sisi lain, jika Anda membutuhkan dukungan penuh, saya yakinNokogiri
ini adalah pilihan yang baik.CGI::escapeHTML
tidak luput dari karakter Jerman seperti äöüß, dan mungkin lebih ... Dengan Nokogiri saya belum memeriksanya, tetapi ini akan menjadi nilai tambah.Untuk mendekode karakter dalam Rails gunakan:
Begitu,
akan menghasilkan
sumber
#raw
tidak memecahkan kode apa pun. Ini memberitahu pandangan untuk tidak menyandikan string. Ini dilakukan dengan membungkus string dalamActiveSupport::SafeBuffer
, yang pada gilirannya memiliki flag (html_safe?
), disetel ke true. Tampilan menggunakan bendera ini untuk menentukan bahwa string dapat disuntikkan langsung ke dalam HTML tanpa melarikan diri. Saya suka menganggaphtml_safe
sebagai indikasi oleh programmer bahwa string tersebut telah benar-benar lolos.Jika Anda tidak ingin menambahkan dependensi baru hanya untuk melakukan ini (seperti
HTMLEntities
) dan Anda sudah menggunakanHpricot
, itu bisa melarikan diri dan menghapus untuk Anda. Ini menangani lebih dariCGI
:sumber
Anda bisa menggunakan
htmlascii
permata:sumber
sumber