我正在使用Ruby on Rails,在我的應用程序中有一個帶有tinyMCE的文本區域,因此用戶可以向文本添加樣式,甚至上傳圖像和視頻。如何顯示沒有css的文本
當這些顯示在主頁上的列表中時,我不希望顯示帖子的樣式,也不希望顯示視頻/圖像。
例如,假設我寫:
你怎麼樣?(一些圖像/視頻點擊這裏)
然後,我想在列表中顯示簡單如下:
你怎麼樣? (未顯示圖像/視頻)
我正在使用Ruby on Rails,在我的應用程序中有一個帶有tinyMCE的文本區域,因此用戶可以向文本添加樣式,甚至上傳圖像和視頻。如何顯示沒有css的文本
當這些顯示在主頁上的列表中時,我不希望顯示帖子的樣式,也不希望顯示視頻/圖像。
例如,假設我寫:
你怎麼樣?(一些圖像/視頻點擊這裏)
然後,我想在列表中顯示簡單如下:
你怎麼樣? (未顯示圖像/視頻)
你有幾個選項可以使用。當您必須渲染屏幕報廢的網頁內容時,剝離,清理HTML也非常有用。您的情況可能會更簡單,因爲您不會「預料到」從網頁抓取收集到的意外內容。
您可以使用strip_tags
這消除字符串中的標籤:
strip_tags("Strip <i>these</i> tags!")
# => Strip these tags!
strip_tags("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
# => Bold no more! See more here...
strip_tags("<div id='top-bar'>Welcome to my website!</div>")
# => Welcome to my website!
的sanitize
方法應該逃避一些並刪除其他標記。要了解更多關於鐵軌消毒的信息,請參閱here。
如果您需要更多控制檢查sanitize或loofah。我更喜歡絲瓜,但消毒可能會更符合你的口味。絲瓜是建立在nokogiri上,你可以定義細粒度的規則,你想如何按摩HTML或HTML片段。除了白名單,剝離你也可以做標籤的擦洗:
span2div = Loofah::Scrubber.new do |node|
node.name = "div" if node.name == "span"
end
..其中跨越divs。
謝謝!這是我想要的。 – 2011-01-25 15:41:22
strip_tags
幫助程序將從字符串中刪除HTML標記。
html = "<em>Hello!</em> <img src='/logo.png' />"
strip_html(html) # => 'Hello! '
但是!雖然我們的主題是允許用戶輸入自己的HTML,但請確保您完全瞭解後果。您絕對需要正在使用HTML白名單過濾器來阻止XSS攻擊。事實上,我不確定,如果你允許Flash嵌入,輸入可能被消毒,因爲Flash文件被允許隨意運行任意的Javascript。
請確保您在繼續操作之前完全瞭解所涉及的問題。上傳任意HTML的能力只能授予你個人知道的一小羣非常可信的用戶。
這總是很難完全覆蓋。
根據你的規範,我明白你想要刪除具有樣式的HTML標籤。
以下示例可能對您有所幫助。
控制器/ PostsController.rb
def index
@posts = Post.find.all
end
助手/ PostsHelper.rb
def strip_html(content)
content.gsub(/<\/?[^>]*>/,"")
end
查看/職位/ index.html.erb
<ul>
<% @posts.each do |post| %>
<li>
<h1><a href="<%= post_path(post)%>"><%= post.title %></a></h1>
<p><%= strip_html(post.body) %></p>
</li>
<% end %>
</ul>
谷歌是你的朋友:http://stackoverflow.com/questions/2576394/remove-all-html-tags-from-attributes-in-rails – apneadiving 2011-01-25 13:37:56