cse / helpers-ip
该助手允许您操作网络IP地址(IPv4和IPv6)。
Requires
- php: >=7.1
Requires (Dev)
README
英语 | 俄语
IP CSE HELPERS
该助手允许您操作网络IP地址(IPv4和IPv6)。
项目仓库: https://github.com/cs-eliseev/helpers-ip
DEMO
$ip = IP::getRealIP(); if (IP::isIP($ip)) { switch (true) { case IP::isIPv4($ip): break; case IP::isIPv6($ip): $ip = IP::removeSubnetMaskIPv6($ip); $ip = IP::getRangeIPv6($ip); $ip = IP::getFirstIPByVersion($ip); break; } $version = IP::getVersionIP($ip); }
简介
CSE HELPERS 是一个由PHP编写简单函数的库集合,供人们使用。
尽管PHP是互联网的主要编程语言,但其功能不足。IP CSE HELPERS 是用于操作网络IP地址(IPv4和IPv6)的。
CSE HELPERS 是为了快速开发Web应用程序而创建的。
CSE Helpers项目
- 数组CSE助手
- Cookie CSE助手
- 日期CSE助手
- Email CSE助手
- IP CSE助手
- Json CSE助手
- 数学转换CSE助手
- 电话CSE助手
- 请求CSE助手
- 会话CSE助手
- 单词CSE助手
以下是一些有关如何初始化库和执行常用命令的信息。
安装
您可以在此处找到此项目的最新版本。
Composer
执行以下命令以获取软件包的最新版本
composer require cse/helpers-ip
或 composer.json 应包含以下内容
{ "require": { "cse/helpers-ip": "*" } }
Git
在本地上克隆此仓库
git clone https://github.com/cs-eliseev/helpers-ip.git
下载
使用
该类由静态方法组成,便于在任何项目中使用。请参阅示例 examples-ip.php。
获取真实IP地址
示例
IP::getRealIP(); // xxx.xxx.xxx.xxx
删除IPv6子网掩码
示例
IP::removeSubnetMaskIPv6('2a0a:2b40::4:60/124'); // 2a0a:2b40::4:60
检查是否为IPv4地址
示例
IP::isIPv4('127.0.0.1'); // true
检查是否为IPv6
IP::isIPv4('2a0a:2b40::4:60'); // false
检查是否不是IP
IP::isIPv4('256.256.256'); // false
检查是否为IPv6地址
示例
IP::isIPv6('2a0a:2b40::4:60'); // true
检查是否为空
IP::isIPv6('::'); // true
检查localhost IPv6
IP::isIPv6('::1'); // true IP::isIPv6('0:0:0:0:0:0:0:1'); // true
检查是否为IPv4
IP::isIPv6('127.0.0.1'); // false
检查是否不是IP
IP::isIPv6(':'); // false
获取IP地址版本
示例
IP::getVersionIP('::1'); // 6
获取IPv4版本
IP::getVersionIP('127.0.0.1'); // 4
获取IPv6版本
IP::getVersionIP('0:0:0:0:0:0:0:1'); // 6
获取非IP版本
IP::getVersionIP('256.256.256.256'); // null
是IP地址
示例
IP::isIP('::1'); // true
检查IPv4版本
IP::isIP('127.0.0.1'); // true
检查IPv6版本
IP::isIP('0:0:0:0:0:0:0:1'); // true
检查非IP版本
IP::isIP('256.256.256.256'); // false
获取IPv6地址范围
示例
IP::getRangeIPv6('2a0a:2b40::4:60/124'); // ['2a0a:2b40::4:60', '2a0a:2b40::4:6f']
过滤IP地址
示例
IP::filterIPs([ '127.0.0.1', '2a0a:2b40::4:60', '255.255.255.255', '2a0a:2b40::4:6f', '256.256.256.256' ]); // [4 => ['127.0.0.1', '255.255.255.255'], 6 => ['2a0a:2b40::4:60', '2a0a:2b40::4:6f']]
无数据IP版本
IP::filterIPs([ '127.0.0.1', '255.255.255.255', '256.256.256.256' ]); // [4 => ['127.0.0.1', '255.255.255.255'], 6 => []]
过滤IPv4地址
IP::filterIPs([ '127.0.0.1', '2a0a:2b40::4:60', '255.255.255.255', '2a0a:2b40::4:6f', '256.256.256.256' ], 4); // ['127.0.0.1', '255.255.255.255']
过滤IPv6地址
IP::filterIPs([ '127.0.0.1', '2a0a:2b40::4:60', '255.255.255.255', '2a0a:2b40::4:6f', '256.256.256.256' ], 6); // ['2a0a:2b40::4:60', '2a0a:2b40::4:6f']
按版本获取第一个IP
示例
IP::getFirstIPByVersion([ '256.256.256.256', '127.0.0.1', '2a0a:2b40::4:60', '255.255.255.255', '2a0a:2b40::4:6f', '256.256.256.256' ], 4); // '127.0.0.1'
按版本6获取第一个IP
IP::getFirstIPByVersion([ '256.256.256.256', '127.0.0.1', '2a0a:2b40::4:60', '255.255.255.255', '2a0a:2b40::4:6f' ], 6); // '2a0a:2b40::4:60'
测试 & 代码覆盖率
使用PHPUnit进行单元测试。单元测试确保类和方法确实做了它应该做的事情。
PHPUnit的通用文档可以在https://phpunit.de/documentation.html找到。
要运行PHPUnit单元测试,请执行
phpunit PATH/TO/PROJECT/tests/
如果您想生成代码覆盖率报告,请使用以下命令
phpunit --coverage-html ./report PATH/TO/PROJECT/tests/
使用PHPUnit默认配置
phpunit --configuration PATH/TO/PROJECT/phpunit.xml
捐赠
您可以通过此处支持此项目。您还可以通过为项目做出贡献或报告错误来帮忙。甚至提出您对功能建议也是很好的。任何帮助都十分欢迎。
许可
IP CSE HELPERS 是一个开源的 PHP 库,遵循 MIT 许可协议。请参阅 许可文件 获取更多信息。
GitHub @cs-eliseev