[RUBY-ON-RAILS] 어떻게 메인 도메인을 얻기 위해 루비의 URL을 구문 분석?
RUBY-ON-RAILS어떻게 메인 도메인을 얻기 위해 루비의 URL을 구문 분석?
나는 www를 도메인의 주요 부분을 얻을 루비 어떤 URL을 구문 분석 할 수 있어야합니다 (바로 XXXX.com)
해결법
-
==============================
1.이것은 거의 모든 URL과 함께 작동합니다 :
이것은 거의 모든 URL과 함께 작동합니다 :
# URL always gets parsed twice def get_host_without_www(url) url = "http://#{url}" if URI.parse(url).scheme.nil? host = URI.parse(url).host.downcase host.start_with?('www.') ? host[4..-1] : host end
또는:
# Only parses twice if url doesn't start with a scheme def get_host_without_www(url) uri = URI.parse(url) uri = URI.parse("http://#{url}") if uri.scheme.nil? host = uri.host.downcase host.start_with?('www.') ? host[4..-1] : host end
당신은 'URI'을 필요로 할 수 있습니다.
-
==============================
2.참고 유일한 방법은 모든 최상위 도메인 목록을 만들려면 도메인 (정책이 각 레지스트리와 다를 수) 특정 최상위 도메인에 등록 할 수있는 가장 높은 수준을 찾는 어떤 알고리즘 방법이 없습니다 주시고 도메인을 등록 할 수있는 수준.
참고 유일한 방법은 모든 최상위 도메인 목록을 만들려면 도메인 (정책이 각 레지스트리와 다를 수) 특정 최상위 도메인에 등록 할 수있는 가장 높은 수준을 찾는 어떤 알고리즘 방법이 없습니다 주시고 도메인을 등록 할 수있는 수준.
이는 공공 접미사 목록이 존재하는 이유입니다.
나는 PublicSuffix, 다른 부분에 도메인을 분해 루비 라이브러리의 저자입니다.
다음은 그 예이다
require 'uri/http' uri = URI.parse("http://toolbar.google.com") domain = PublicSuffix.parse(uri.host) # => "toolbar.google.com" domain.domain # => "google.com" uri = URI.parse("http://www.google.co.uk") domain = PublicSuffix.parse(uri.host) # => "www.google.co.uk" domain.domain # => "google.co.uk"
-
==============================
3.조금만 참고 : Mischas 두 번째 예에서 URL의 두 번째 구문 분석을 극복하기 위해, 대신 URI.parse의 문자열 비교를 만들 수 있습니다.
조금만 참고 : Mischas 두 번째 예에서 URL의 두 번째 구문 분석을 극복하기 위해, 대신 URI.parse의 문자열 비교를 만들 수 있습니다.
# Only parses once def get_host_without_www(url) url = "http://#{url}" unless url.start_with?('http') uri = URI.parse(url) host = uri.host.downcase host.start_with?('www.') ? host[4..-1] : host end
이 방법의 단점은 널리 표준 HTTP의 URL (들) 기반의 URL을 제한하고 있다는 것이다. 당신이 그것을 더 일반적인 FTP (링크 f.e.)를 사용한다면 당신은 그에 따라 조정해야합니다.
-
==============================
4.어드레스로 특히 구문 분석 도메인에 PublicSuffix 보석을 사용, 아마 2018 년 정답이다.
어드레스로 특히 구문 분석 도메인에 PublicSuffix 보석을 사용, 아마 2018 년 정답이다.
그러나, 나는 다양한 데이터 소스에서 여러 장소에서 분석하는 이런 종류의 작업을 수행해야하고, 반복적으로 사용하는 자세한 그것을 조금을 발견했다. 나는 주위에 래퍼를 생성 그래서에서는 Adomain :
require 'adomain' Adomain["https://toolbar.google.com"] # => "toolbar.google.com" Adomain["https://www.google.com"] # => "google.com" Adomain["stackoverflow.com"] # => "stackoverflow.com"
나는이 다른 사람에게 도움이되기를 바랍니다.
-
==============================
5.여기 .co.uk에서와 .com.fr와 함께 잘 작동 하나의 - 종류의 도메인
여기 .co.uk에서와 .com.fr와 함께 잘 작동 하나의 - 종류의 도메인
domain = uri.host[/[^.\s\/]+\.([a-z]{3,}|([a-z]{2}|com)\.[a-z]{2})$/]
-
==============================
6.URL이 형식 http://www.google.com을 인 경우에, 당신은 뭔가를 할 수 있습니다 :
URL이 형식 http://www.google.com을 인 경우에, 당신은 뭔가를 할 수 있습니다 :
a = 'http://www.google.com' puts a.split(/\./)[1] + '.' + a.split(/\./)[2]
또는
a =~ /http:\/\/www\.(.*?)$/ puts $1
-
==============================
7.그럼 당신은이 방법을 쓸 수 있습니다 :
그럼 당신은이 방법을 쓸 수 있습니다 :
require 'URI' def domain_name(url, arg={:with_dot_principal=>false}) arg[:with_dot_principal] ? URI(url).hostname.split('.').last(2).join('.') : URI(url).hostname.split('.').last(2).first end
그리고 사용 :
domain_name("https://www.google.com/?gws_rd=ssl&safe=active&ssui=on") # => "google" domain_name("http://google.com", with_dot_principal: true) # => "google.com"
from https://stackoverflow.com/questions/6674230/how-would-you-parse-a-url-in-ruby-to-get-the-main-domain by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] Cloud9 포스트 그레스 (0) | 2020.02.24 |
---|---|
[RUBY-ON-RAILS] 어떻게 모달 오픈 링크의 콘텐츠 그래서 LINK_TO으로 부트 스트랩 모달을 추가? (0) | 2020.02.24 |
[RUBY-ON-RAILS] 하위 도메인에 카피 바라 - default_host를 (0) | 2020.02.24 |
[RUBY-ON-RAILS] 레일 액티브는 : LEFT 조인은 가입 대신 INNER 조인 (0) | 2020.02.24 |
[RUBY-ON-RAILS] 60 초 안정 파이어 접속을 얻을 수없는 (127.0.0.1:7055) (0) | 2020.02.24 |