php 字符串是不是域名,php通过正则判断字符串是否是域名

正则表达式如下:

/^([a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?\.)?[a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?(\.us|\.tv|\.org\.cn|\.org|\.net\.cn|\.net|\.mobi|\.me|\.la|\.info|\.hk|\.gov\.cn|\.edu|\.com\.cn|\.com|\.co\.jp|\.co|\.cn|\.cc|\.biz)$/i

函数如下:

/**

* @author byron sampson

* @description 匹配

* q.cn 正确

* q-.cn 错误

* qq.cn正确

* -q.cn 错误

* q-q.cn 正确

* qq-qq-qq.cn 正确

* qq--qq.cn -- 错误

*

* @param $domain

* @return bool

*/

function is_domain($domain)

{

return !empty($domain) && strpos($domain, '--') === false &&

preg_match('/^([a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?\.)?[a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?(\.us|\.tv|\.org\.cn|\.org|\.net\.cn|\.net|\.mobi|\.me|\.la|\.info|\.hk|\.gov\.cn|\.edu|\.com\.cn|\.com|\.co\.jp|\.co|\.cn|\.cc|\.biz)$/i', $domain) ? true : false;

}

第二种写法:

/**

* @param string $str

* @return bool

*/

function is_domain($str = '')

{

return !empty($str) && !preg_match('/^-|-$|--|-\.|\.-/', $str) && preg_match('/^([\w-]+\.)?[\w-]+' . reg_exp_suffix() . '$/', $str) ? true : false;

}

/**

* @return mixed

*/

function reg_exp_suffix()

{

return '(' . str_replace('.', '\.', implode('|', allow_domain_suffix())) . ')';

}

/**

* @description 允许的扩展名

* @return array

*/

function allow_domain_suffix()

{

$arr = array(

'.com',

'.com.cn',

'.cn',

'.net',

'.net.cn',

'.org',

'.org.cn',

'.gov.cn',

'.hk',

'.cc',

'.info',

'.biz',

'.mobi',

'.us',

'.me',

'.co',

'.co.jp',

'.edu',

'.tv',

'.la',

);

sort($arr);

return array_unique(array_reverse($arr));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值