替换基于数据库的html文本

我想制作应用程序,将所需的网页日语翻译成英语的词汇。 但是我想要开始forms只是简单地显示网页内联欲望的网页,如谷歌翻译。( 见这里 )

我使用下面的代码从所需的URL获取html数据,现在我想在html中同时替换基于数据库的数据中的文本。

def submit require 'open-uri' charset = nil @html = open(params[:url]) do |f| charset = f.charset f.read end end 

数据库被撤消,但我将包含应该切换的日语词汇,以及应该切换而不是日语词汇的英语词汇。

有任何想法或方法吗? 另外,我刚刚开始学习Ruby on Rails,所以如果你用一些例子或详细解释来解释它会很好:)

我只想根据数据库中的项目替换文本中的特定单词,我不想多语言。

编辑:

例如,我从所需的网页下面跟随html。

      

I want to switch "aaa" this and "ccc"

假设我想将(替换)“aaa”切换为“bbb”,将“ccc”切换为“ddd”。 应该切换并切换而不是前一个单词的单词在数据库中。(目标:“aaa”,“ccc”开关:“bbb”,“ddd”)

因为这个html是我用open-uri得到它的,所以我无法实现像#{target}这样的代码。

根据这个答案中的代码和这个答案工作 ,你可以做这样的事情:

 replacements = {'aaa' => 'ccc', 'bbb' => 'ddd' } regex = Regexp.new(replacements.keys.map { |x| Regexp.escape(x) }.join('|')) doc = Nokogiri::HTML::DocumentFragment.parse(html) doc.traverse do |x| if x.text? x.content = x.content.gsub(regex, replacements) end end 

我也测试过:

 replacements = {'こんにちは' => 'Good day', 'bbb' => 'ddd' } regex = Regexp.new(replacements.keys.map { |x| Regexp.escape(x) }.join('|')) "こんにちは Mr bbb".gsub(regex, replacements) 

给出了预期的:

 Good day Mr ddd 

您可能还想使用:

 regex = Regexp.new(replacements.keys.map { |x| '\\b'+Regexp.escape(x)+'\\b' }.join('|')) 

防止“aaardvark”变成“cccrdvark”。