2013-01-18 10 views
6

अगर मैं एक यूआरएल था:,रूबी में "www" के बिना सबडोमेन या मुख्य डोमेन प्राप्त करने के लिए पार्स URL?

example.com 

लेकिन अगर मैं था:

http://www.example.com/page 

मैं करने के लिए है कि व्याख्या करने के लिए चाहते हैं

http://blog.example.com/page 

मैं वापस प्राप्त करना चाहते हैं :

blog.example.com 

क्या यह मुश्किल है?

+0

ध्यान दें कि 'www.example.com' किसी दिए गए डोमेन के लिए 'example.com' के बराबर नहीं है। (यह अभ्यास में सच है, सिद्धांत में नहीं।) –

+0

परिणामी डोमेन का प्रदर्शन प्रदर्शन के अलावा किसी अन्य चीज़ के लिए नहीं किया जा रहा है, लेकिन हेड-अप – Alfo

उत्तर

11

उपयोग रूबी के URI मॉड्यूल:

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

दोनों मामलों में, यूआरआई, पूरे होस्ट नाम निकालता है क्योंकि चुनिंदा डोमेन से मेजबान अलग करना कोई मतलब नहीं है।

आप की तरह कुछ का उपयोग कर, उस तर्क को अलग से लागू करना होगा:

%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

आप URI class इस्तेमाल कर सकते हैं; उदाहरण के लिए:

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 बस "www", केस संवेदी, "" के लिए जगह लेगा।

+2

'.gsub (/ www \ ./ i," ") 'आउटपुट' 'foowww.com'.gsub (/ www \ ./ i, "") => "foocom" –

संबंधित मुद्दे