php判断是否为域名或者ip

if(isset($_GET['url']) and $domain<>"")
{

$gurl_yz = explode(".",$_GET['url']);
$gurl_yz_num=count($gurl_yz)-1;
if (is_numeric($gurl_yz[$gurl_yz_num]))
{
echo "<center>域名格式错误 <a href='".$_SERVER["PHP_SELF"]."'>返回</a></center>";
exit();

}
}
这个好像有点作用但是不完美
光汉字没有拦截 ip到给拦截了
最新回答
少女爷爷

2024-06-25 14:04:57

你这个方法是通过判断域名或者ip被“.”分隔成数组后的最后一个元素是否是数字实现的?
应该是有问题的吧,比如aaa.111这个应该不是合法的ip,你这个就通过了。
我觉得还是使用正则比较好。
追问
正规的怎么写呢?
追答

不好意思,以为很久不用php了,刚查了下手册,发现有更好的方式了,php现在有个filter_var函数,自己就支持验证是否是域名或者IP。

if(filter_var($ip, FILTER_VALIDATE_IP)) {// 合法IP
}else {// 非法IP
}
if(filter_var($url, FILTER_VALIDATE_URL)) {// 合法URL
}else {// 非法URL
}
追问
谢谢我对php不怎么懂你可以帮我把这句话写到上面这个代码里面去吗谢谢了啊
追答
你这段代码并没有使用$domain这个变量,是你自己写的么,你可以标注一下你这个是想干什么么,逻辑我不是太明白,如果只是想判断是否是ip或者域名,直接用我发的那个函数就可以了,不需要写到你那个程序里面。
悦心自足

2024-06-25 06:22:35

if(filter_var('123.3.3.22', FILTER_VALIDATE_IP)) {
echo 'IP地址';
}else {

echo '不是IP地址';
}
if(filter_var('
http://www.njhunuo.cn
', FILTER_VALIDATE_URL)) {
echo '合法URL';
}else {
echo '非法URL';
}