2013-01-18 6 views
6

Wenn ich eine URL hatte:URL in Ruby analysieren, um Subdomain oder Hauptdomain ohne "www" zu erhalten?

http://www.example.com/page 

Ich möchte, dass interpretieren:

example.com 

Aber wenn ich hatte:

http://blog.example.com/page 

Ich möchte zurück bekommen :

blog.example.com 

Ist das schwierig?

+0

Beachten Sie, dass "www.example.com" für eine bestimmte Domäne nicht unbedingt äquivalent zu "example.com" ist. (Dies gilt in der Praxis, nicht nur in der Theorie.) –

+0

Die resultierende Domäne wird nicht für etwas anderes als die Anzeige verwendet, aber danke für das Heads-Up – Alfo

Antwort

11

Verwenden Ruby URI Modul:

require 'uri' 
URI.parse('http://www.example.com/page').host 
=> "www.example.com" 
URI.parse('http://blog.example.com/page').host 
=> "blog.example.com" 

In beiden Fällen extrahiert URI den gesamten Hostnamen, da selektiv den Host aus dem Bereich Strippen macht keinen Sinn.

Sie werden diese Logik separat implementieren müssen, mit so etwas wie:

%w[http://www.example.com/page http://blog.example.com/page].each do |u| 
    puts URI.parse(u).host.sub(/^www\./, '') 
end 

Welche Ausgänge:

example.com 
blog.example.com 
0

Sie die URI class verwenden könnte; zum Beispiel:

require 'uri' 
uri1 = URI.parse("http://www.example.com/page") 
puts uri1.host.gsub(/www\./i, "") #This will print example.com 
uri2 = URI.parse("http://blog.example.com/page") 
puts uri2.host #This prints blog.example.com 

gsub ersetzen einfach "www", Groß- und Kleinschreibung, für "".

+2

'.gsub (/ www \ ./ i," ") 'wird auch' 'foowww.com'.gsub (/ www \ ./ i," ") ausgeben =>" foocom "' –

Verwandte Themen