如何将协议相对url转换为标准HTTP



我正在使用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

最新更新