cse/helpers-ip

该助手允许您操作网络IP地址(IPv4和IPv6)。

1.0.4 2019-03-08 05:38 UTC

This package is auto-updated.

Last update: 2024-08-29 04:20:17 UTC


README

英语 | 俄语

IP CSE HELPERS

Travis (.org) Codecov Scrutinizer code quality

Packagist Minimum PHP Version Packagist GitHub repo size

该助手允许您操作网络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项目

以下是一些有关如何初始化库和执行常用命令的信息。

安装

您可以在此处找到此项目的最新版本。

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