반응형
문자열 Ruby on Rails에서 HTML 제거
Ruby on Rails로 작업하고 있습니다. html
위생 처리 또는 동등한 방법을 사용하여 문자열에서 제거 하고 입력 태그의 value 속성 내부의 텍스트 만 유지하는 방법이 있습니까?
있다 strip_tags
방법은 ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
편집 : value 속성 안에 텍스트를 가져 오기 위해 Xpath 표현식과 함께 Nokogiri와 같은 것을 사용하여 문자열에서 가져올 수 있습니다.
모델에서 이것을 사용하려면
ActionView::Base.full_sanitizer.sanitize(html_string)
"strip_tags"메소드의 코드입니다.
그렇습니다. sanitize(html_string, tags:[])
ActionView::Base.full_sanitizer.sanitize(html_string)
태그 및 속성의 화이트리스트는 다음과 같이 지정할 수 있습니다.
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
위의 문장은 img , br 및 p 태그 와 src 및 style 속성을 허용합니다 .
Loofah 라이브러리는 HTML과 XML (문서 및 문자열 조각 모두)에 적합하므로 Loofah 라이브러리를 사용했습니다. html 살균제 보석의 엔진입니다. 코드 예제를 붙여 넣어 사용이 얼마나 간단한지를 보여줍니다.
unsafe_html = "ohai! <div>div is safe</div> <script>but script is not</script>"
doc = Loofah.fragment(unsafe_html).scrub!(:strip)
doc.to_s # => "ohai! <div>div is safe</div> "
doc.text # => "ohai! div is safe "
이건 어때요?
white_list_sanitizer = Rails::Html::WhiteListSanitizer.new
WHITELIST = ['p','b','h1','h2','h3','h4','h5','h6','li','ul','ol','small','i','u']
[Your, Models, Here].each do |klass|
klass.all.each do |ob|
klass.attribute_names.each do |attrs|
if ob.send(attrs).is_a? String
ob.send("#{attrs}=", white_list_sanitizer.sanitize(ob.send(attrs), tags: WHITELIST, attributes: %w(id style)).gsub(/<p>\s*<\/p>\r\n/im, ''))
ob.save
end
end
end
end
참고 URL : https://stackoverflow.com/questions/7414267/strip-html-from-string-ruby-on-rails
반응형
'program story' 카테고리의 다른 글
경고 : "문자열 리터럴이 아니며 형식 인수가없는 형식" (0) | 2020.08.02 |
---|---|
Xcode에서 활성 체계의 이름을 변경하는 방법은 무엇입니까? (0) | 2020.08.02 |
주어진 URL에서 도메인 이름 가져 오기 (0) | 2020.08.02 |
다른 입력 (양식 없음)에서 Enter 키를 누르면 버튼 클릭 이벤트가 발생합니다. (0) | 2020.08.02 |
프로그래밍 방식으로 Android 탐색 막대의 높이와 너비를 얻으려면 어떻게합니까? (0) | 2020.08.02 |