获取 html 并从 url 中删除参数

Take html and remove the params from url

我正在尝试创建一个辅助方法来解析由 trix 富文本编辑器生成的 url,returns 我的 aws 的私有 url,但需要成为 public.

我一直在尝试 split 并删除我不需要的 html 部分,但我就是无法正确获取 Ruby 代码。 The gist 显示响应和我一直尝试做的方法。

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

我建议您先去掉 HTML 的特殊字符。例如通过使用 Nokogiri。假设我们在 html_string:

中有 html
html_unescaped_string = Nokogiri::HTML.fragment(html_string).to_s

我不确定您真正想要从 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)

希望对您有所帮助...