जवाबों:
इसमें एक strip_tags
विधि है ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
संपादित करें: मान विशेषता के अंदर पाठ प्राप्त करने के लिए, आप स्ट्रिंग से बाहर निकलने के लिए एक Xpath अभिव्यक्ति के साथ Nokogiri जैसी किसी चीज़ का उपयोग कर सकते हैं।
अगर हम इसका उपयोग मॉडल में करना चाहते हैं
ActionView::Base.full_sanitizer.sanitize(html_string)
जो "strip_tags" विधि में कोड है
require 'html/sanitizer'
अपने स्वयं के सैनिटाइजर के साथ कर सकते हैं और तुरंत कर सकते हैं HTML::FullSanitizer.new
।
require 'html/sanitizer'
त्रुटि उठाता है , इसलिए मुझे इसका उपयोग करना होगा: Rails::Html::FullSanitizer.new
( edgeapi.rubyonrails.org/classes/HTML/… )
हां, इसे कॉल करें: 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 और शैली की अनुमति देता है ।
मैंने लूफै़ण पुस्तकालय का उपयोग किया है, क्योंकि यह HTML और XML (दोनों दस्तावेज़ और स्ट्रिंग टुकड़े) दोनों के लिए उपयुक्त है। यह html sanitizer रत्न के पीछे का इंजन है। मैं बस कोड उदाहरण चिपका रहा हूं यह दिखाने के लिए कि इसका उपयोग कितना सरल है।
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
Rails::Html::FullSanitizer.new
यदि आप एक श्वेतसूची निर्दिष्ट नहीं करना चाहते हैं तो भी है ।
text.strip
काम करता है