Возьмите HTML и удалите параметры из URL - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать вспомогательный метод для синтаксического анализа URL-адреса, сгенерированного редактором trix rich text, который возвращает частный URL-адрес моему aws, но должен быть общедоступным.

Я пытался split и удалить фрагменты HTML, которые мне не нужны, но я просто не могу получить правильный код Ruby. Суть показывает ответ и метод, который я пытался сделать.

1 Ответ

0 голосов
/ 30 октября 2018

Если я правильно понимаю ваш вопрос, вы хотите удалить части параметров запроса всех 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)

Надеюсь, это поможет ...

...