2013-01-18 15 views
6

Bir URL olsaydı: Ben olsaydı,"www" olmadan alt alan adını veya ana etki alanını almak için Ruby'deki URL'yi ayrıştırın mı?

example.com 

Ama:

http://www.example.com/page 

ben bu yorumlamak istiyorum

http://blog.example.com/page 

geri almak istiyorum :

Bu zor mu?

+0

Belirli bir alan adı için 'www.example.com' ifadesinin example.com ile eşdeğer olmadığını unutmayın. (Bu sadece teoride değil, pratikte de geçerlidir.) –

+0

Ortaya çıkan etki alanı, görüntüleme dışındaki herhangi bir şey için kullanılmayacak, ancak – Alfo

cevap

11

Kullanım Ruby'nin URI modülü: seçici etki alanından ana sıyırma hiçbir mantıklı nedeni Her iki durumda da

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

, URI, tüm ana bilgisayar adını ayıklar.

Sen gibi bir şey kullanarak, ayrı olarak mantığını uygulamak gerekir: çıkışı

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

:

example.com 
blog.example.com 
0

Sen URI class kullanabilirsiniz; örneğin:

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 basitçe "" için duyarsız "www", vaka yerini alacak.

+2

'.gsub (/ www \ ./ i," "için teşekkürler.) '' ayrıca çıkış yapacak '' foowww.com'.gsub (/ www \ ./ i, "") => "foocom" –

İlgili konular