首页 > 解决方案 > 如何将 IP 号码范围定义为变量

问题描述

我想在 php 中将 IP 号码范围设置为一个名称

如何在 PHP 中以正确的方式写下一行?

$block_renge = array("192.168.*.*", "10.10.*.*");

我希望 * 是任何数字 (0-255) 。有人可以帮助我吗?

然后我用下面的代码检查IP:

if ( ( in_array( $ip_address, $block_renge ) ) ) {
// do some stuff
//$ip_address is the customer ip address

也许使用 preg_match 我们可以做到这一点?

标签: phpippreg-match

解决方案


使用ip2long()long2ip()

function ip_range($from, $to) {
  $start = ip2long($from);
  $end = ip2long($to);
  $range = range($start, $end);
  return array_map('long2ip', $range);
}

以上将两个 IP 地址转换为数字(使用 PHP 核心函数),创建一个数字范围,然后将该数字范围转换为 IP 地址。

如果您希望它们用空格分隔,只需implode()结果即可。

然后你可以使用

if (in_array($ip, $ip_range)){ //...

推荐阅读