2012-03-25 57 views
0

我想要評估用戶提交的URL以確定它們是否包含有效的主機名(格式),如果是,請提取主機名。瞭解任何可以提供幫助的圖書館/方法?檢查主機名的URL

例子:

user_input = "www.google.com" 

if user_input.has_valid_host? 
    hostname = user_input.get_hostname #=> "google.com" 
    url = "http://" + @hostname #=> "http://google.com" 
else 
    puts "Invalid URL" 
end 

這個例子很簡單,但我需要的URL對所有有效域擴展檢查,並從任何字符串提取的主機名(假設它是存在)

回答

1

我不知道紅寶石,但我不會認爲這是一個寶貴的問題。

我會使用正則表達式來按照您的建議拆分主機名。

然後我會做一個系統調用nslookup例程。

在命令提示符處的Windows系統上,它是nslookup。

C:\Users\xyz>nslookup www.google.com 
Server: UnKnown 
Address: 192.168.237.2 

Name: www.l.google.com 
Address: 173.194.73.99 
Aliases: www.google.com.localdomain 

從Ruby中,你應該做的API調用,而不是使用命令行的,但兩者最終將接口到本地機器上的DNS服務。

參見:Is there a good DNS server library in ruby?

+0

感謝,如果我花了一些時間將其整合到我運行的小型Web應用程序,但我決定吃什麼淨dns'寶石可能會合作,以「啞下」的問題,用「可尋址」的寶石來解決問題 – Dru 2012-03-25 23:42:14