-2

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

我一直在尝试split删除不需要的 html 片段,但我无法正确获取 Ruby 代码。要点显示了我一直在尝试做的响应和方法。

4

1 回答 1

2

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

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

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

我不确定您真正想从 URL 中删除什么。但是让我们假设您想从 URL 中删除所有查询参数,其中右侧包括'AWS'(Eg 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,您可以使用 nice URI.regexp。有了这个,你可以这样做:

html_unescaped_string.gsub(URI.regexp, &sanitizer)

我希望这会有所帮助...

于 2018-10-30T09:57:48.907 回答