我不認爲有可能告訴Nokogiri 而不是在HTML中的參數內編碼文本值。這是下面的規則解析器,但這並不意味着我們必須接受它的輸出:
require 'nokogiri'
REGEX_HASH = {
'%7B' => '{',
'%7D' => '}'
}
REGEX = /(?:#{ Regexp.union(REGEX_HASH.keys).source })/
# => /(?:%7B|%7D)/
doc = Nokogiri::HTML::DocumentFragment.parse("<a href='{{var_name}}'>click</a>")
doc.to_html
# => "<a href=\"%7B%7Bvar_name%7D%7D\">click</a>"
fixed_html = doc.to_html.gsub(REGEX, REGEX_HASH)
# => "<a href=\"{{var_name}}\">click</a>"
但是,如果XHTML或XML輸出是可以接受的,您可以簡化事情很大:
doc = Nokogiri::HTML::DocumentFragment.parse("<a href='{{var_name}}'>click</a>")
doc.to_html # => "<a href=\"%7B%7Bvar_name%7D%7D\">click</a>"
doc.to_xhtml # => "<a href=\"{{var_name}}\">click</a>"
doc.to_xml # => "<a href=\"{{var_name}}\">click</a>"