2009-10-12 82 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

相关问题