У меня есть функция PHP, которая правильно извлекает имя домена (без какого-либо поддоменов) для любого варианта URL. Я новичок в Ruby и с трудом заставляю его работать:
function get_domain_name( $url )
{
eregi( "http[s]*://([a-zA-Z0-9.-]*)/?.*", $url, $domain );
$domain = explode( ".", $domain[1] );
if ( strlen( end($domain) ) == 2 && ( strlen($domain[count($domain)-2]) == 3 || strlen($domain[count($domain)-2]) == 2 ) )
{
# special case domains -- ex: co.uk .in .ca
return strtolower( $domain[count($domain)-3] . "." . $domain[count($domain)-2] . "." . end( $domain ) );
}
else
{
# regular .com type domains -- three or more letters
return strtolower( $domain[count($domain)-2] . "." . end( $domain ) );
}
}
Есть ли в Rails что-то, что уже делает то же самое?
UPDATE:
Вот что я закончил благодаря @ BenW
def extract_domain(url)
if domain = url.match(/^(http:\/\/)*(www.)*([a-zA-Z0-9.-]*)\/?.*/i)
domain = domain[3].split('.')
if (domain.last.length == 2) && (domain[-2].length == 3 || domain[-2].length == 2)
# special case domains -- ex: co.uk .in .ca
domain[-3..-1].join('.')
else
# regular .com type domains -- three or more letters
domain[-2..-1].join('.')
end
end
end
Он принимает все эти форматы:
http://www2.google.com
www2.google.com
http://www.google.com
http://www.google.co.uk
www.google.com
google.co.uk
http://some.long.ass.subdomain.google.com