php---long2ip()与ip2long()

ip2long()将字符串ip转成int
var_dump(ip2long(“115.115.115.115”));

int 1936946035

long2ip将int转成字符串ip
var_dump(long2ip(1936946035));

string '115.115.115.115' (length=15)

作用:以ip做索引,int查询比char快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
纯真IP数据库是一个常用的IP地理位置查询工具,用于根据IP地址查询对应的地区名。该数据库由纯真网络发布,包含了大量的IP地址段及其对应的地理位置信息。使用PHP编程语言可以通过以下步骤来查询IP地址对应的地区名: 1. 首先,需要将纯真IP数据库文件(通常是QQWry.dat)下载并存储在服务器上。 2. 使用PHP的文件操作函数(例如fopen和fread)来打开并读取数据库文件,获取其中的内容。 3. 解析读取到的数据库内容,根据IP地址对应的起始和结束位置,使用二分查找等算法来确定目标IP地址所在的位置。 4. 根据确定的位置,提取出对应的地区名信息。 以下是一个简单的示例代码,实现了根据IP地址查询地区名的功能: ```php <?php function searchRegion($ip) { $path = 'QQWry.dat'; $fp = fopen($path, 'rb'); $content = fread($fp, filesize($path)); $start = unpack('V', $content[0] . $content[1] . $content[2] . $content[3])[1]; $end = unpack('V', $content[4] . $content[5] . $content[6] . $content[7])[1]; $ip = pack('N', intval(ip2long($ip))); while ($start <= $end) { $mid = floor(($start + $end) / 2); fseek($fp, $mid * 7); $data = fread($fp, 7); $ipStart = implode('.', array_map('ord', str_split(substr($data, 0, 4)))); if ($ip < $ipStart) { $end = $mid - 1; } else { $offset = unpack('V', substr($data, 4, 3) . chr(0))[1]; if ($offset == 0) { return '未知地区'; } fseek($fp, $offset); $data = fread($fp, 4); if (substr($data, 0, 1) == chr(0x01)) { $offset = unpack('V', substr($data, 1, 3))[1]; fseek($fp, $offset); $data = fread($fp, 3); } return iconv('gbk', 'utf-8', $data); } } return '未知地区'; } ``` 以上代码使用了二分查找算法,在纯真IP数据库中查找目标IP地址所在位置,并返回对应的地区名(使用了GBK到UTF-8的字符编码转换)。当查询的IP地址在数据库中不存在时,将返回"未知地区"。 希望以上解答可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值