【问题标题】:Converting img src tags to image_tag将 img src 标签转换为 image_tag
【发布时间】:2011-06-16 23:28:33
【问题描述】:

我正在使用这个脚本来解析 HTML 标签,以便将它们转换成

我的正则表达式和测试用例在这里:http://rubular.com/r/sBPAaWSdGQ

我想捕获 src="captureme.jpg" 和所有其他属性,以便我可以将它们移植过来。

我已经启动了正则表达式,但它还没有完成——我需要一些东西来捕获所有属性......即类、id 以下是我目前所拥有的。

class ToImageTag

  def self.convert
    Dir.glob("app/views/**/*").each do |filename|
      next unless filename =~ /\.html\.erb$/
      file = File.new(filename, "rw")

      file.each_line do |line|
        source = /(<\s*img\s*.*src=(.*?)(>|\/>))/.match(line)
        source = src[1].split.first

        image_tag = "<%= image_tag(\"#{source}\")"

        line.gsub!(src[0], image_tag)
      end

      file.close
    end

  rescue => err
    puts "Exception: #{err}"
  end

end

【问题讨论】:

  • 无法使用 nokogiri 解析 .html.erb 文件。刚刚试过。
  • 使用 hpricot.com 这是 HAML 人员用来将 ERB 转换为 HAML 的方法。
  • "@Maletor "Cannot use nokogiri to parse .html.erb files.",这是因为 ERB 文件不是 HTML。它们类似于 HTML,但这对于解析器来说还不够好。你可以使用 SAX 处理器做你想做的事,它就像一个过滤器,立即输出所有非 img 标签,然后当你有 src 参数时替换模板。

标签: html ruby-on-rails ruby regex ruby-on-rails-3


【解决方案1】:

你在使用 JavaScript 吗?如果是这样,你可以使用 jQuery 来做你想做的事。

var src = new Array();

$('img').each(function(index, element) {
    src[index] = $(element).attr('src');
});

我还没有尝试过,所以它可能不是没有错误的。

如果您不使用 javascript,那么有很多 DOM 解析器可以为您简化这项任务。我不认为使用正则表达式是最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多