0

我正在使用不支持协议相关 URL的wkhtmltoimage实用程序,例如:<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script>

我需要将其转换为:<script src="http://cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script>在 Ruby 中。我想知道找到这些类型的 URL 的最有效方法是什么,因为我不知道如何为它们编写正则表达式然后http:添加到它前面。

提前致谢。

4

2 回答 2

0

您可以为此使用 perl:

perl -pi -e 's/src="\/\//src="http:\/\//' *

上面的这条语句将替换在目录中找到的所有模式。

于 2014-06-12T09:12:40.270 回答
0

这里不需要使用Regexps,只需对 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
于 2014-06-12T11:53:57.553 回答