我知道这个问题似乎已经被提出和回答了,但还有更复杂的情况需要考虑。
我在这里列出了一些情况:
http://news.yahoo.com/test -> yahoo.com
http://www.yahoo.com/test -> yahoo.com
http://sports.sina.com.cn/test -> sina.com.cn
http://news.yahoo.co.jp/test -> yahoo.co.jp
http://subdomain.evisu.jp/test -> evisu.jp
http://cs.stanford.edu/test -> stanford.edu
http://eecs.tsinghua.edu.cn/test -> tsinghua.edu.cn
http://math.u-tokyo.ac.jp/test -> u-tokyo.ac.jp
其实还有更复杂的情况,但下面就不讨论情况了。
http://www.jx.cn/test -> jx.cn
http://www.ecjtu.jx.cn/test -> ecjtu.jx.cn
您可以使用 cpan 上的 URI
模块来解析这些字符串并提取主机名:
use URI;
while(<>) {
my $uri = URI->new($_);
my $host = $uri->host;
}
如果您需要摆脱第一个子域,只需使用字符串拆分即可。像这样:
my @parts = split /./, $host;
unshift @parts if @parts > 2;
my $newHost = join ".", @parts;