我的目标是在段落中找到类似'b1234'的内容并将其替换为:
<a href=http://bugtracker.com/bug/1234>b1234</a>
我使用普通红宝石制作了这个:
"I fixed b1234 today".gsub(/(b([0-9]+))/i, '<a href=http://bugtracker.com/bug/\2>\1</a>')
输出:
=> "I fixed <a href=http://bugtracker.com/bug/1234>b1234</a> today"
我在rails视图中有以下内容:
<%= post.content %>
注意:创建帖子时,我不会在我的数据库中存储HTML链接代码。
如果我这样做:
<%= post.content.gsub(...) %>
我在输出文件中转义了html:
<a href= ... instead of <a href= ...
... 我想要那种行为,我不希望用户发布HTML(iframe会很吓人!)。
但是,我怎么能在不牺牲安全性的情况下获得我想要的查找和替换功能?也许是Javascript方法?
谢谢!
答案 0 :(得分:4)
加倍等号。 <%== post.content.gsub(...) %>
。如果用户也可能在此内容中编写HTML,则您需要Sanitize,以便仅允许指定的HTML标记,例如。
编辑|实际上,如果您要替换的搜索字符串不包含HTML特殊字符,您可以转义字符串,然后执行gsub:
<%== h(post.content).gsub(...) %>