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

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

作者:稚子 时间:2016-04-15 分类:BS架构后台语言 评论:0条 浏览:3464

正则表达式如下:

/^([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 <xiaobo.sun@qq.com> 
 * @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));  
}

 

相关推荐
更多

mysql merge engine 介绍
Posted on 11月03日
Centos 6.5 中 supervisord 启动脚本
Posted on 06月05日
Modernizr的介绍和使用
Posted on 02月06日
用条件注释判断浏览器
Posted on 04月10日

发表评论

邮箱地址不会被公开。 必填项已用*标注

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。