在我的Rails项目中,我有以下代码:
auto_link( h( wrap_long_string(post.text,50) )).gsub(/\n/,"<br />")
wrap_long_string
定义为:
def wrap_long_string(txt,col = 20)
txt.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/,
"\\1\\3\n")
end
此代码用于显示用户输入的文本,同时通过输入非常长的非破坏字符串来防止用户弄乱页面布局。
然而,分解长不间断字符串的行为也会阻止auto_link
助手工作。
我想做的是拥有以下文字:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search
变成了类似的东西:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br/>aaaaaaaaaa <a href='http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search'>http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=ZGF&q=example&btnG=Search</a>
答案 0 :(得分:1)
如果您可以控制这些应用的顺序,我建议通过自动链接助手然后通过长文本断开器运行文本(并使'智能'足以不计算html标签中的文本作为文本:))。这应该创建链接,我相信你可以在标签之间没有任何不良后果:)
答案 1 :(得分:1)
或者,你可以定义你自己的auto_link(使用text_helper.rb中的现有代码作为模型)来首先扫描网址(和电子邮件),进行替换,找到你做出替换的指数,然后在不属于这些指数的地方打破这一行。
这应该只需要现有的自动链接代码以及对index()和length()的调用。