স্ট্রল রুবি থেকে রেলগুলিতে এইচটিএমএল স্ট্রিপ করুন


121

আমি রুবেলে অন রেলসের সাথে কাজ করছি, htmlস্যানিটাইজ বা সমান পদ্ধতি ব্যবহার করে কোনও স্ট্রিং থেকে ফিরতে এবং ইনপুট ট্যাগে মান বৈশিষ্ট্যের ভিতরে কেবল পাঠ্য রাখার উপায় আছে?


স্যানিটাইজ বা সমান নয় তবে text.stripকাজ করে
কেওন

উত্তর:


138

এখানে একটি strip_tagsপদ্ধতি রয়েছে ActionView::Helpers::SanitizeHelper:

http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags

সম্পাদনা: মান বৈশিষ্ট্যের ভিতরে পাঠ্য পাওয়ার জন্য, আপনি নোকোগিরির মতো কোনও এক্সপাথ এক্সপ্রেশন সহ কিছুটি ব্যবহার করতে পারেন স্ট্রিং থেকে বেরিয়ে আসতে।


183

আমরা যদি এটি মডেলটিতে ব্যবহার করতে চাই

ActionView::Base.full_sanitizer.sanitize(html_string)

যা "স্ট্রিপ_ট্যাগস" পদ্ধতিতে কোড


31
এটি কাজ করে তবে এমডোএল থেকে অ্যাকশনভিউকে উল্লেখ করা বিশ্রী। আরও পরিষ্কারভাবে আপনি require 'html/sanitizer'নিজের স্যানিটাইজার এর সাথে ইনস্ট্যান্ট করতে পারেন HTML::FullSanitizer.new
নিক হালদিমান

8
@ নাহাল্ডিম্যান, require 'html/sanitizer'ত্রুটি উত্থাপন করেছে তাই আমাকে ব্যবহার করতে হবে: Rails::Html::FullSanitizer.new( এজপিপি.আরবিওনরাইলস.আর / ক্লাসস / এইচটিএমএল /… )
লিনহ ড্যাম


24
ActionView::Base.full_sanitizer.sanitize(html_string)

ট্যাগ এবং বৈশিষ্ট্যগুলির সাদা তালিকাটি বেলো হিসাবে নির্দিষ্ট করা যেতে পারে

ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))

উপরের স্টেটমেন্টটি ট্যাগগুলিকে আইএমজি , বিআর এবং পি এবং এসআরসি এবং শৈলীর বৈশিষ্ট্যগুলিকে মঞ্জুরি দেয় ।


9

আমি লুফাহ গ্রন্থাগারটি ব্যবহার করেছি, কারণ এটি HTML এবং এক্সএমএল উভয়ের জন্যই উপযুক্ত (উভয় দস্তাবেজ এবং স্ট্রিং খণ্ড)। এটি এইচটিএমএল স্যানিটাইজার মণির পিছনে ইঞ্জিন। এটি ব্যবহার করা কত সহজ is তা বোঝানোর জন্য আমি কেবল কোড উদাহরণটি আটক করছি।

লুফাহ রত্ন

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 "

1

এ কেমন?

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আপনি যদি কোনও শ্বেতলিস্ট নির্দিষ্ট করতে না চান তবে তাও রয়েছে ।
ফ্রেডরিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.