基本上,我想挑选一些关键字并动态分配链接。
我该怎么做呢?
让我说我有这样的事情;
<p>ruby, rails, php, python, django and sinatra</p>
我想指定像ruby和python这样的关键字的链接,所以最终的结果应该是这样的;
<p><a href="http://www.ruby-lang.org">ruby</a>, rails, php, <a href="http://www.python.org">python</a>, django and sinatra</p>
非常感谢任何帮助或建议!
答案 0 :(得分:4)
一种方法,假设您只想链接整个单词:
html = "<p>ruby, rails, php, python, django and sinatra</p>"
word_links = { "ruby" => "http://www.ruby-lang.org",
"python" => "http://www.python.org" }
html.gsub(/\w+/) do |word|
word_links[word] ? "<a href=\"#{word_links[word]}\">#{word}</a>" : word
end
如果您正在操作的文本相当大,但您要链接的单词列表非常小,则可以通过仅对匹配单词进行替换来稍微优化:
html.gsub(/\b(#{word_links.keys.join('|')})\b/,
"<a href=\"#{word_links[$1]}\">#{$1}</a>")
请确保您没有可以出现在开始标记内的任何关键字(例如,在属性值内部,这将彻底破坏此解决方案。)对于真正强大的解决方案,您将必须使用正确的HTML解析器,只需替换内容文本。
答案 1 :(得分:3)
如果您想在将内容呈现给浏览器之前在服务器端执行此操作,那么您可以像
那样执行此操作str = "<p>ruby, rails, php, python, django and sinatra scruby rubysd 12ruby'; ruby </p>"
link_hash = {'ruby' => "<a href = 'http://www.ruby-lang.org'>ruby</a>", 'python' => "<a href='http://www.python.org'>python</a>" }
link_hash.each_pair do |key, value|
str = str.gsub(/\b#{key}\b/, value)
end
str #=> "<p><a href = 'http://www.ruby-lang.org'>ruby</a>, rails, php, <a href='http://www.python.org'>python</a>, django and sinatra scruby rubysd 12ruby'; <a href = 'http://www.ruby-lang.org'>ruby</a> </p>"
答案 2 :(得分:0)
只需使用文字替换?将“ruby”替换为“&lt; a href =”http://ruby-lang.org“&gt; ruby&lt; / a&gt;”并完成。 请参阅javascript参考中的String.replace。
答案 3 :(得分:0)
如果你想特别喜欢,我认为你可以使用后过滤器:
class MyController < ApplicationController
after_filter :link_stuff
protected
def link_stuff
# You'd want to do this more carefully, so as to only get "ruby"s in text,
# not in tags etc.
response.body.gsub(/ruby/, "<a href = 'http://www.ruby-lang.org'>ruby</a>")
end
end
答案 4 :(得分:0)
你可以这样做
首先将值作为数组(或列表)获取 例如:红宝石 PHP python等..
将此数组发送给帮助者
def link_builder(arr) html_string =“”
表示arr中的元素
check whether your word needs a wrapper. you might want to do a table check
if warpper_needed?
html_string = html_string + <a href='link'>elment</a>
else
html_string = html_string + <p>element</p>
end
端
html_string
端
希望你有这个主意,(这可能不会起作用)
欢呼声, sameera