2012-03-29 3 views

답변

2

업데이트 된 대답은

html = "<a href='http://example.com'>incomplete" 
html = sanitize(s, tags: %w[a p]) 
Nokogiri::HTML::DocumentFragment.parse(html).to_html 
+0

그 자체로 마지막 줄이 나에게 잘 맞았으며 닫히지 않은 태그도 닫았다. –

5

적절한 HTML 파서를 사용하여이를 수행 할 수 있습니다. Nokogiri를 추천합니다.

require 'nokogiri' 
# ... 
s = "<a href='http://example.com'>incomplete" 
Nokogiri::HTML::fragment(sanitize(s, :tags => ['a', 'p'])).to_xml 
# => "<a href=\"http://example.com\">incomplete</a>" 

항상 유효한 XML을 반환합니다. 물론 더 쉽게 사용할 수 있도록 자신 만의 도우미 메서드로 패키지 할 수 있습니다.