sanitize()
을 ApplicationHelper
으로 태그를 닫지 마십시오.HTML을 살결 처리하고 불완전한 태그를 닫으십시오.
s = "<a href='http://example.com'>incomplete"
sanitize(s, :tags => ['a', 'p'])
위의 발췌 문장은 문자열을 그대로 남겨 둡니다. 어떻게하면 닫을 </a>
을 추가하거나 적어도 <a>
을 제거 할 수 있습니까?
sanitize()
을 ApplicationHelper
으로 태그를 닫지 마십시오.HTML을 살결 처리하고 불완전한 태그를 닫으십시오.
s = "<a href='http://example.com'>incomplete"
sanitize(s, :tags => ['a', 'p'])
위의 발췌 문장은 문자열을 그대로 남겨 둡니다. 어떻게하면 닫을 </a>
을 추가하거나 적어도 <a>
을 제거 할 수 있습니까?
업데이트 된 대답은
html = "<a href='http://example.com'>incomplete"
html = sanitize(s, tags: %w[a p])
Nokogiri::HTML::DocumentFragment.parse(html).to_html
적절한 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을 반환합니다. 물론 더 쉽게 사용할 수 있도록 자신 만의 도우미 메서드로 패키지 할 수 있습니다.
감사합니다,하지만 난이 형식 오류'보고 있어요 : 그 응답으로 Integer'로 기호를 변환 할 수 없습니다, 그것은 일반 텍스트와 함께 작동합니다. 이것은 Nokogiri 1.5.2입니다. – mahemoff
@mahemoff :'Nokogiri :: HTML :: fragment (" 불완전하다.) to_xml'이 여기에서 잘 작동합니다. 시도한 실제 수프 스프는 뭐니? –
사실, 그것은 위생 처리의 두 번째 인수 인 것처럼 보입니다. 원래 질문에서와 같이, 허용 된 태그는 해시에 있어야합니다 (tags =>). 'Nokogiri :: HTML :: fragment (sanitize ('test 불완전하다, : tags => ['a ','p '])). to_xml'이 효과가있다. . – mahemoff
그 자체로 마지막 줄이 나에게 잘 맞았으며 닫히지 않은 태그도 닫았다. –