Как кодировать / декодировать HTML-объекты в Ruby?
Я пытаюсь декодировать некоторые HTML-объекты, такие как '&lt;' становится '<'.
у меня есть старый гем (html_helpers), но он, кажется, был дважды заброшен.
какие рекомендации? Мне нужно будет использовать его в модели.
7 ответов:
HTMLEntities можете сделать это:
: jmglov@laurana; sudo gem install htmlentities Successfully installed htmlentities-4.2.4 : jmglov@laurana; irb irb(main):001:0> require 'htmlentities' => [] irb(main):002:0> HTMLEntities.new.decode "¡I'm highly annoyed with character references!" => "¡I'm highly annoyed with character references!"
для кодирования символов можно использовать
CGI.escapeHTML:string = CGI.escapeHTML('test "escaping" <characters>')чтобы расшифровать их, есть
CGI.unescapeHTML:CGI.unescapeHTML("test "unescaping" <characters>")конечно, перед этим вам нужно включить библиотеку CGI:
require 'cgi'и если вы находитесь в Rails, вам не нужно использовать CGI для кодирования строки. А вот и
hметод.<%= h 'escaping <html>' %>
для декодирования символов в Rails используйте:
<%= raw '<html>' %>и
<%= raw '<br>' %>выводит
<br>
Я думаю nokogiri gem также хороший выбор. Он очень стабилен и имеет огромное сообщество вкладчиков.
примеры:
a = Nokogiri::HTML.parse "foo bär" a.text => "foo bär"или
a = Nokogiri::HTML.parse "¡I'm highly annoyed with character references!" a.text => "¡I'm highly annoyed with character references!"
если вы не хотите добавлять новую зависимость только для этого (например
HTMLEntities) и вы уже используетеHpricot, он может как избежать, так и unescape для вас. Он обрабатывает гораздо больше, чемCGI:Hpricot.uxs "foo bär" => "foo bär"
<% str="<h1> Test </h1>" %> result: < h1 > Test < /h1 > <%= CGI.unescapeHTML(str).html_safe %>
Comments