2012-09-15 33 views
4

我有這樣的HTML文本:軌道截斷方法添加特殊字符

<p> I'm a html &nbsp; text</p> 

要顯示它在我的網頁上,我第一次消毒,然後卸下標籤:

sanitize(best_practice.milestone.description, :tags=>[]) 

然後我表示OK ,&nbsp;被刪除。

但是,如果我決定要截斷這樣的文字:

sanitize(best_practice.milestone.description, :tags=>[]).truncate(30) 

&nbsp;是我的網頁上再次可見。所有特殊字符實際上都可見。

我該怎麼做才能避免截斷使這個特殊的字符可見?

+1

我一直在嘗試這一年。好問題。 – Benjamin

+0

其實我會非常驚訝的是消毒條  - 我認爲它只會剝奪一組默認的html標籤,如果你不告訴它做的話。 –

+0

Sanitize不會去掉 ,但至少它在我的html頁面中不可見。在使用truncate之後,它是可見的,這很奇怪,因爲「truncate」只應該切斷字符串而不做其他任何事情。 – ndemoreau

回答

11

處理消毒幫手和截斷可能會非常棘手。有很多不同的清理助手:h,CGI :: escapeHTML,sanitize,strip_tags,html_safe等。如果字符串在開始標記和結束標記之間被截斷,或者在右側截斷,則清理和截斷不能很好地協同工作一個特殊的HTML字符的中間。

下面的語句似乎工作

sanitize(text, :tags=>[]).truncate(30, :separator => " ").html_safe 

訣竅就是一通:分離選項在自然間隔截斷文本。