Tôi đang làm việc với Ruby on Rails, Có cách nào để tách html
khỏi chuỗi sử dụng phương pháp khử trùng hoặc bằng và chỉ giữ văn bản bên trong thuộc tính giá trị trên thẻ đầu vào không?Dải html từ chuỗi Ruby on Rails
Trả lời
Có một phương pháp strip_tags
trong ActionView::Helpers::SanitizeHelper
:
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
Edit: để nhận được văn bản bên trong thuộc tính giá trị, bạn có thể sử dụng một cái gì đó giống như Nokogiri với một biểu thức XPath để có được điều đó ra khỏi chuỗi.
Nếu chúng ta muốn sử dụng này trong mô hình
ActionView::Base.full_sanitizer.sanitize(html_string)
đó là mã trong "strip_tags" phương pháp
này làm việc nhưng đề cập đến ActionView từ mdoel là vụng về. Sạch hơn bạn có thể 'yêu cầu 'html/sanitizer'' và nhanh chóng khử trùng của riêng bạn với' HTML :: FullSanitizer.new'. –
@nhaldimann, 'require 'html/sanitizer'' gây ra lỗi vì vậy tôi phải sử dụng:' Rails :: Html :: FullSanitizer.new' (http://edgeapi.rubyonrails.org/classes/HTML/FullSanitizer.html# phương pháp-i-sanitize) –
Vâng, hãy gọi này: sanitize(html_string, :tags=>[])
ActionView::Base.full_sanitizer.sanitize(html_string)
danh sách trắng của thẻ và các thuộc tính có thể được chỉ định dưới dạng
ActionView::Base.full_sanitizer.sanitize(html_string, :tags => %w(img br p), :attributes => %w(src style))
Tuyên bố trên cho phép các thẻ: img, br và p và thuộc tính: src và kiểu.
Làm thế nào về điều này?
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
Ngoài ra còn có 'Rails :: Html :: FullSanitizer.new' nếu bạn không muốn chỉ định một danh sách trắng. – Fredrik
Tôi đã sử dụng thư viện Loofah, vì nó phù hợp cho cả HTML và XML (cả tài liệu và đoạn chuỗi). Nó là động cơ đằng sau đá quý khử trùng html. Tôi chỉ đơn giản dán ví dụ mã để hiển thị mức độ dễ sử dụng của nó.
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. Ruby on Rails 301
- 2. Ruby vs Ruby On Rails
- 3. Ruby on Rails: unloadable
- 4. Chuyển đổi HTML thành content_tag trong Ruby on Rails
- 5. HTML 5 Sự kiện Ruby on Rails Server Side
- 6. Dải văn bản từ tài liệu HTML sử dụng Ruby
- 7. Ruby on Rails + PostgreSQL: sử dụng các chuỗi tùy chỉnh
- 8. Ruby on Rails: Hiển thị HTML một phần dưới dạng một dòng của chuỗi
- 9. Intellisense cho Ruby, Ruby on Rails, Python
- 10. Đếm chiều dài chuỗi trong javascript và Ruby on Rails
- 11. Ruby on rails - cách truy xuất chuỗi kết nối
- 12. Ruby on Rails vs Django
- 13. Monit Ruby on Rails Sidekiq
- 14. Ruby on rails application root
- 15. Ruby on Rails CoffeeScript không
- 16. Ruby on Rails SMS gửi
- 17. Ruby on rails và Node.js
- 18. Sử dụng Ruby on Rails
- 19. Ruby on Rails trên IIS?
- 20. Antipatterns với Ruby on Rails
- 21. Lỗi Rake Ruby on Rails
- 22. Ruby on Rails javascript_include_tag: defaults
- 23. Tài liệu Ruby on Rails
- 24. Ruby on Rails: Token Fields - railscast
- 25. Lỗi xác thực của Ruby on Rails
- 26. Tích hợp Ruby on Rails Với Wordpress
- 27. Tải tệp lên trong Ruby on Rails
- 28. FTPS (TLS/SSL) từ Ruby on Rails App
- 29. Loại trừ tùy chọn từ collection.map trong Ruby on Rails?
- 30. Chạy phantomj từ ứng dụng Ruby on Rails
Không khử trùng hoặc tương đương nhưng 'text.strip' làm việc – Keon