我正在尝试创建一个辅助方法来解析由trix富文本编辑器生成的网址,该网址会将私有网址返回给我的aws,但需要是公开的。
我一直在尝试split
并删除我不需要的html片段,但我只是无法正确获得Ruby代码。 The gist显示了我一直在尝试的响应和方法。
答案 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)
我希望对您有帮助...