我正在使用wkhtmltoimage实用程序,它不支持协议相对url,例如:<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script>
我需要将其转换为Ruby中的:<script src="http://cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script>
。我想知道找到这些类型的url的最有效的方法是什么,因为我无法弄清楚如何为它们编写正则表达式,然后将http:
添加到它。
您可以使用perl:
perl -pi -e 's/src="///src="http:///' *
上面的语句将替换目录中找到的所有模式
这里不需要使用Regexp
s,只需为HTML使用HTML解析器,为URI使用URI解析器:
require 'nokogiri'
require 'uri'
doc = Nokogiri.HTML(<<-EOHTML)
<script
src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js">
</script>
EOHTML
doc.xpath('//script[@src]').each do |script|
uri = URI.parse(script['src'])
uri.scheme = 'http' if uri.scheme.nil?
script['src'] = uri.to_s
end