2011-12-14 43 views
2
Nokogiri("<a href='*|UNSUB|*'>unsubscribe</a>").to_html 
# returns 
"<a href="*%7CUNSUB%7C*">unsubscribe</a>" 

如何让Nokogiri不逃避管道?防止Nokogiri逃离URL中的字符

+0

为什么要产生[无效URI(http://stackoverflow.com/questions/1547899/which-characters-make-a-url-invalid )? Nokogiri正在帮你一个忙。 – Phrogz 2011-12-16 05:00:30

+2

因为我需要将URL发送到正在查找诸如\ * | UNSUB | *之类的URL的服务,它们将用取消订阅URL替换它。 – 2011-12-16 07:49:12

回答

1
require 'nokogiri' 

doc = Nokogiri("<a href='*|UNSUB|*'>unsubscribe</a>") 

puts doc.to_html 
#=> <a href="*%7CUNSUB%7C*">unsubscribe</a> 

puts doc.to_xml 
#=> <?xml version="1.0"?> 
#=> <a href="*|UNSUB|*">unsubscribe</a> 

或者:

puts doc.to_html.gsub('%7C','|') 
#=> <a href="*|UNSUB|*">unsubscribe</a>