IT

Ruby에서 HTML 엔터티를 어떻게 인코딩 / 디코딩합니까?

lottoking 2020. 5. 13. 08:18
반응형

Ruby에서 HTML 엔터티를 어떻게 인코딩 / 디코딩합니까?


나는 다음과 같은 몇 가지 HTML 엔티티 디코딩하려고 '&amp;lt;'되고를 '<'.

오래된 보석 ( html_helpers )이 있지만 두 번 버려진 것으로 보입니다.

어떤 추천? 모델에서 사용해야합니다.


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 "&iexcl;I&#39;m highly&nbsp;annoyed with character references!"
=> "¡I'm highly annoyed with character references!"

문자를 인코딩하려면 다음을 사용할 수 있습니다 CGI.escapeHTML.

string = CGI.escapeHTML('test "escaping" <characters>')

그것들을 해독하기 위해 CGI.unescapeHTML:

CGI.unescapeHTML("test &quot;unescaping&quot; &lt;characters&gt;")

물론 그 전에 CGI 라이브러리를 포함시켜야합니다.

require 'cgi'

Rails에 있다면 문자열을 인코딩하기 위해 CGI를 사용할 필요가 없습니다. 있다 h방법.

<%= h 'escaping <html>' %>

노코 기리 보석 도 좋은 선택 이라고 생각 합니다. 매우 안정적이며 커뮤니티에 큰 기여를하고 있습니다.

견본:

a = Nokogiri::HTML.parse "foo&nbsp;b&auml;r"    
a.text 
=> "foo bär"

또는

a = Nokogiri::HTML.parse "&iexcl;I&#39;m highly&nbsp;annoyed with character references!"
a.text
=> "¡I'm highly annoyed with character references!"

Rails에서 문자를 해독하려면 다음을 사용하십시오.

<%= raw '<html>' %>

그래서,

<%= raw '&lt;br&gt;' %>

출력 할 것이다

<br>

이 작업을 수행하기 위해 새 종속성을 추가하지 않으려는 경우 (예 HTMLEntities:) 이미 사용중인 Hpricot경우 이스케이프 및 이스케이프를 모두 해제 할 수 있습니다. 그것은 훨씬 더 많은 것을 처리합니다 CGI:

Hpricot.uxs "foo&nbsp;b&auml;r"
=> "foo bär"

htmlascii보석 을 사용할 수 있습니다 :

Htmlascii.convert string

<% str="<h1> Test </h1>" %>

result: &lt; h1 &gt; Test &lt; /h1 &gt;

<%= CGI.unescapeHTML(str).html_safe %>

참고 URL : https://stackoverflow.com/questions/1600526/how-do-i-encode-decode-html-entities-in-ruby

반응형