PHP if IP或域检测函数

PHP if IP或域检测函数,php,Php,是否有一种方法可以使用php检测字符串是Ip还是域,如下例 $string = "http://192.168.0.0"; $string = "http://example.com"; 因此,如果字符串是IP,脚本/函数将执行某些操作,如果它将其检测为域,它将执行其他操作 谢谢你你可以这样简单地测试它: $isIP = (bool)ip2long($_SERVER['HTTP_HOST']); 函数将返回false如果主机不是有效的IP地址(如域名)。使用ip2long函数的好处是它还可以

是否有一种方法可以使用php检测字符串是Ip还是域,如下例

$string = "http://192.168.0.0";
$string = "http://example.com";
因此,如果字符串是IP,脚本/函数将执行某些操作,如果它将其检测为域,它将执行其他操作


谢谢你

你可以这样简单地测试它:

$isIP = (bool)ip2long($_SERVER['HTTP_HOST']);
函数将返回
false
如果主机不是有效的IP地址(如域名)。使用
ip2long
函数的好处是它还可以验证提供的IP地址。例如,地址是4.4.4.756,它会给你假地址

因此,要测试给定字符串,可以执行以下操作:

$string = "http://192.168.0.0";
$parts = parse_url($string);
$isIP = (bool)ip2long($parts['host']);

你有关于这个问题的正则表达式:


您需要使用PHP函数:

您可以使用正则表达式

您可以在这里找到示例:

代码/正则表达式模式:

ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

ValidHostnameRegex = "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
如何在php中使用正则表达式:


您还可以比较HTTP主机和服务器地址。 对于IPV6,您还应该修剪HTTP_主机上的方括号

$isIP = @($_SERVER['SERVER_ADDR'] === trim($_SERVER['HTTP_HOST'], '[]'));

似乎比正则表达式更有效,但不确定ip2long aproach是否更有效。

这通常使用正则表达式来完成。你会在谷歌上找到数以百万计的例子。