我确信有人会将此标记为重复的问题,但没有其他答案对我有用。
我正在使用ruby并将变量传递到我的html页面。假设我的变量“camp_name”等于“abc'd”
<%=camp_name%>
这输出“abc'd”这就是我想要的。
<input type="text" class="form-control" name="campaign_name" required value='<%=camp_name%>'>
由于单撇号,该字段中的值现在为“abc”。如何让它忽略撇号?感谢。
答案 0 :(得分:0)
您可以将变量转义为html实体:
camp_name.gsub("'", "'")
您也应该为其他字符执行此操作,因为正如评论所述,用户只需在您的页面中使用当前脚本插入HTML标记即可。可能最重要的是以下内容:
camp_name.gsub("<", "<")
camp_name.gsub(">", ">")
答案 1 :(得分:0)
如果你正在使用Rack(如果你正在使用Rails或Sinatra肯定会使用它,即使你没有使用它也可能就在那里),有一个用于转义的内置功能HTML就是这种事情。调用Rack::Utils#escape_html
会将&符号,括号和引号替换为HTML实体(例如'
而不是'
)。
在您的情况下,您需要以下代码:
<input type="text" class="form-control" name="campaign_name" required value='<%= Rack::Utils.escape_html(camp_name) %>'>
这将评估为:
<input type="text" class="form-control" name="campaign_name" required value='abc'd'>
这是在HTML中显示撇号的正确方法。
正如旁注,显示用户提交的文本而不在网站上转义是一个非常坏主意,因为恶意用户可以添加任意Javascript,这可能会导致您的网站无用,添加广告,以及更多。您应该养成在显示之前转义用户可以提交的任何文本的习惯,可以通过手动gsub
或使用这样的帮助方法。