以html并从url中删除参数

时间:2018-10-30 02:12:01

标签: html ruby-on-rails ruby amazon-web-services trix

我正在尝试创建一个辅助方法来解析由trix富文本编辑器生成的网址,该网址会将私有网址返回给我的aws,但需要是公开的。

我一直在尝试split并删除我不需要的html片段,但我只是无法正确获得Ruby代码。 The gist显示了我一直在尝试的响应和方法。

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您想删除html字符串中所有URL的查询参数部分,对吧?

我建议您首先摆脱HTML的特殊字符。例如,使用Nokogiri。假设我们在html_string中有html:

html_unescaped_string = Nokogiri::HTML.fragment(html_string).to_s

我不确定您要从URL中真正删除什么。但是,假设您要从URL中删除所有查询参数,该URL的右侧包括'AWS'(例如what_ever=bla_AWS_bla)。

您可以使用以下函数来做到这一点:

sanitizer = Proc.new do |uri_string|
  URI.parse(uri_string).tap do |uri|
    new_params = CGI.parse(uri.query).transform_values do |values| 
      values.reject { |value| value.include?("AWS") }
    end
    new_params.reject! { |_k, v| !v.empty? }
    uri.query = new_params.empty? ? nil : URI.encode_www_form(new_params)
  end.to_s
end

要查找字符串中的URL,可以使用漂亮的URI.regexp。有了这个,你可以做到:

html_unescaped_string.gsub(URI.regexp, &sanitizer)

我希望对您有帮助...