programing

루비에서 HTML 엔티티를 인코딩/디코딩하려면 어떻게 해야 합니까?

linuxpc 2023. 6. 20. 21:25
반응형

루비에서 HTML 엔티티를 인코딩/디코딩하려면 어떻게 해야 합니까?

다음과 같은 HTML 엔티티를 디코딩하려고 합니다.'&amp;lt;'되는 것'<'.

오래된 보석(html_helpers)이 있는데 두 번이나 버려진 것 같습니다.

추천할 만한 것이 있습니까?저는 그것을 모델로 사용해야 할 것입니다.

문자를 인코딩하려면 다음을 사용합니다.CGI.escapeHTML:

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

그들을 해독하려면, 다음과 같은 것이 있습니다.CGI.unescapeHTML:

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

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

require 'cgi'

또한 레일즈에 있는 경우 CGI를 사용하여 문자열을 인코딩할 필요가 없습니다.저기 있습니다.h방법.

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

HTML 엔티티는 다음을 수행할 수 있습니다.

: 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!"

저는 노코기리 보석도 좋은 선택이라고 생각합니다.그것은 매우 안정적이고 거대한 기여 공동체를 가지고 있습니다.

샘플:

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!"

레일에서 문자를 디코딩하려면 다음을 사용합니다.

<%= raw '<html>' %>

그렇게,

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

출력할 것입니다.

<br>

이렇게 하기 위해 새 종속성을 추가하지 않으려면 다음과 같이 하십시오.HTMLEntities이미 사용 중입니다.Hpricot탈출할 수도 있고 탈출할 수도 있습니다다음보다 훨씬 더 많은 작업을 처리합니다.CGI:

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

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

Htmlascii.convert string

레일에서는 다음을 사용할 수 있습니다.ERB::Util.html_escape그리고.ERB::Util.url_encode.
뷰에서 다음과 같이 별칭이 지정됩니다.h그리고.u

http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB/Util.html

<% 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

반응형