Hi everyone,
Does anyone know how to extract domain name without sub domain from url?
Example: http://test.domain.com => http://domain.com
Please give me an example code in ruby.
Thanks,
Leakhina
Hi everyone,
Does anyone know how to extract domain name without sub domain from url?
Example: http://test.domain.com => http://domain.com
Please give me an example code in ruby.
Thanks,
Leakhina
Chem Leakhina wrote:
This is actually quite difficult, because there is a multitude of
possible second-level domains which can be used (such as .co.uk), and
they are not really standardized. Just picking one at random, the
country of Jordan has .com.jo, .net.jo, .gov.jo, .edu.jo, .org.jo,
.mil.jo, .name.jo, and .sch.jo.
If one were to ignore such things, then it becomes easier:
$ irb
irb(main):001:0> require ‘uri’
=> true
irb(main):002:0> u = URI.parse “http://test.domain.com/”
=> #<URI::HTTP:0xb7bbf848 URL:http://test.domain.com/>
irb(main):003:0> u.host
=> “test.domain.com”
irb(main):004:0> u.host.split(“.”)[-2,2]
=> [“domain”, “com”]
irb(main):005:0> u.host.split(“.”)[-2,2].join(“.”)
=> “domain.com”
However, as mentioned above, there are a lot of domains this will not
work for.
-Justin
2009/6/23 Justin C. [email protected]:
Thanks,
$ irbHowever, as mentioned above, there are a lot of domains this will not work
for.
We can get better results by ignoring particular known domain prefixes
such as “ftp” and “www”:
%w{
www.google.com
google.co.uk
www.google.co.uk
foo.bar
}.each do |domain|
dom = domain.sub(/^(?:www|ftp)./, ‘’)[/^[^.]+/]
printf “%p → %p\n”, domain, dom
dom = domain[/^(?:(?:ftp|www).)?([^.]+)/, 1]
printf “%p → %p\n”, domain, dom
end
Kind regards
robert
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs