2009-10-12 69 views
2

與當今幾乎所有應用程序一樣,我有通過標準文本輸入輸入各種信息的用戶。我的應用程序在Rails上運行。轉義用戶通過文本字段輸入的&符號?

將我包含爲網站副本的一部分的轉義&符號看作是一件不容易的事情。但是,如何轉義由用戶動態輸入的&符號?目前,它打破了我的前端驗證。

+0

出於什麼目的 「逍遙遊」 呢? – 2009-10-12 16:42:06

回答

6

當您顯示值時,您需要用HTML實體替換某些字符。這些字符是:

& : & 
< : &lt; 
> : &gt; 
" : &quot; 

也許有,你可以使用一個的HTMLEncode功能,否則,你可以使用普通的字符串操作。僞代碼:

output replace(replace(replace(replace(text, "&", "&amp"), "<", "&lt;"), ">", "&gt;", """", "&quot;") 

編輯:
我發現,你可以使用html_escape()函數:

<%=html_escape @text%> 

或短:

<%=h @text%> 
+1

+1'h'是模板中的HTML轉義的Rails方法。 **你必須始終使用這個!**這不僅僅是使&符號看起來正確的問題;如果將文本內容輸出到HTML而不逃脫它,則會產生跨站點腳本安全漏洞。 – bobince 2009-10-12 17:37:19

+2

按照其他nubes的提示稍後閱讀。在我的特定情況下,文本是超鏈接的。我正在使用link_to方法。如果您嘗試使用<%= h link_to url,url%>,那麼您的網址將被打印在屏幕上。做到這一點的方式如下:<%= link_to(h(url),url)%> – MikeH 2009-10-12 21:16:39

相關問題