我正在尝试创建一个辅助方法来解析由 trix 富文本编辑器生成的 url,它将私有 url 返回到我的 aws,但需要是公共的。
我一直在尝试split
删除不需要的 html 片段,但我无法正确获取 Ruby 代码。要点显示了我一直在尝试做的响应和方法。
我正在尝试创建一个辅助方法来解析由 trix 富文本编辑器生成的 url,它将私有 url 返回到我的 aws,但需要是公共的。
我一直在尝试split
删除不需要的 html 片段,但我无法正确获取 Ruby 代码。要点显示了我一直在尝试做的响应和方法。
如果我正确理解您的问题,您想删除一串 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)
我希望这会有所帮助...