比如:http://www.mydomain.com/list.aspx?id=8 要获取mydomain.com
http://news.mydomain.com/list.aspx?id=8 要获取mydomain.com
http://history.news.mydomain.com/list.aspx?id=8 要获取mydomain.com
http://history.news.mydomain.com.cn/list.aspx?id=8 要获取mydomain.com.cn
http://www.mydomain.cn 要获取mydomain.cn
http://mydomain.cn 要获取mydomain.cn
这样的代码如何写呢?最好能给出代码实现
http://news.mydomain.com/list.aspx?id=8 要获取mydomain.com
http://history.news.mydomain.com/list.aspx?id=8 要获取mydomain.com
http://history.news.mydomain.com.cn/list.aspx?id=8 要获取mydomain.com.cn
http://www.mydomain.cn 要获取mydomain.cn
http://mydomain.cn 要获取mydomain.cn
这样的代码如何写呢?最好能给出代码实现
.com
.com.cn
.net.cn
.net.cn
.gov.cn
.org
....
这些是特征字符串。
正则匹配. 别管前面是多少. 只取最后的XXX.XXX
然后 WWW.XXX.XXX
就肯定是顶级域名啦.
.cn
.mobi
.tel
.asia
.net
.org
.name
.me
.tv
.com.cn
.net.cn
.org.cn
.gov.cn
.cc
.hk
.biz
.info
拿到这个数组就可以解决了
{
try { int i = Convert.ToInt32(str); return true; }
catch { return false; }
} /// <summary>
/// 获取服务器根域名
/// </summary>
/// <returns></returns>
public string GetServerDomain()
{
string str = HttpContext.Current.Request.Url.Host.ToString().ToLower();//此处获取值转换为小写
if (str.IndexOf('.') > 0)
{
string[] strArr = str.Split('.');
string lastStr = strArr.GetValue(strArr.Length - 1).ToString();
if (IsNumeric(lastStr)) //如果最后一位是数字,那么说明是IP地址
{
return str.Replace(".", ""); //替换.为纯数字输出
}
else //否则为域名
{
string[] domainRules = ".com.cn|.net.cn|.org.cn|.gov.cn|.com|.net|.cn|.org|.cc|.me|.tel|.mobi|.asia|.biz|.info|.name|.tv|.hk|.公司|.中国|.网络".Split('|');
string findStr = string.Empty;
string replaceStr = string.Empty;
string returnStr = string.Empty;
for (int i = 0; i < domainRules.Length; i++)
{
if (str.EndsWith(domainRules[i].ToLower())) //如果最后有找到匹配项
{
findStr = domainRules[i].ToString(); //www.px915.COM
replaceStr = str.Replace(findStr, ""); //将匹配项替换为空,便于再次判断
if (replaceStr.IndexOf('.') > 0) //存在二级域名或者三级,比如:www.px915
{
string[] replaceArr = replaceStr.Split('.'); // www px915
returnStr = replaceArr.GetValue(replaceArr.Length - 1).ToString() + findStr;
return returnStr;
}
else //px915
{
returnStr = replaceStr + findStr; //连接起来输出为:px915.com
return returnStr;
};
}
else
{ returnStr = str; }
}
return returnStr;
}
}
else
{
return str;
}
}
匹配也行,直接截取也可以。
string result = (link = (link = link.Substring(link.IndexOf('/') + 2)).Substring(0, link.IndexOf('/') == -1 ? link.Length : link.IndexOf('/'))).Substring(link.LastIndexOf(".", link.LastIndexOf('.') - 1) + 1);
Console.WriteLine(result);
<?php $domainExtArr = array(
'.com',
'.co',
'.info',
'.net',
'.org',
'.me',
'.mobi',
'.us',
'.biz',
'.xxx',
'.ca',
'.co.jp',
'.com.cn',
'.net.cn',
'.org.cn',
'.mx',
'.tv',
'.ws',
'.ag',
'.com.ag',
'.net.ag',
'.org.ag',
'.am',
'.asia',
'.at',
'.be',
'.com.br',
'.net.br',
'.bz',
'.com.bz',
'.net.bz',
'.cc',
'.com.co',
'.net.co',
'.nom.co',
'.de',
'.es',
'.com.es',
'.nom.es',
'.org.es',
'.eu',
'.fm',
'.fr',
'.gs',
'.in',
'.co.in',
'.firm.in',
'.gen.in',
'.ind.in',
'.net.in',
'.org.in',
'.it',
'.jobs',
'.jp',
'.ms',
'.com.mx',
'.nl',
'.nu',
'.co.nz',
'.net.nz',
'.org.nz',
'.se',
'.tc',
'.tk',
'.tw',
'.com.tw',
'.idv.tw',
'.org.tw',
'.hk',
'.co.uk',
'.me.uk',
'.org.uk',
'.vg',
);