Возьмите HTML и удалите параметры из URL
Я пытаюсь создать вспомогательный метод для анализа URL-адреса, сгенерированного редактором trix rich text, который возвращает частный URL-адрес моему aws, но должен быть общедоступным.
Я пытался split
и удалите фрагменты HTML, которые мне не нужны, но я просто не могу получить правильный код Ruby. Суть показывает ответ и метод, который я пытался сделать.
1 ответ
Если я правильно понимаю ваш вопрос, вы хотите удалить части параметров запроса всех URL-адресов в строке html, верно?
Я бы посоветовал вам сначала избавиться от специальных символов HTML. Например, используя Нокогири. Скажем, у нас есть HTML в html_string
:
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)
Надеюсь, это поможет...