七夜/ip-tools

用于操作IPv4和IPv6的PHP IP工具

1.0.0 2022-09-29 13:20 UTC

This package is auto-updated.

Last update: 2024-09-08 11:03:12 UTC


README

Build Status Latest Stable Version Total Downloads Downloads Month License

通用IPv4和IPv6操作工具。

使用Composer安装此包

通过Composer安装此包。编辑项目的composer.json文件,以添加对kseven/ip-tools的依赖。

创建composer.json文件

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "kseven/ip-tools": "~1.1.0"
    }
}

然后运行composer update

或者在命令行中运行命令

composer require kseven/ip-tools

使用方法

<?php
    $loader = require __DIR__.'/vendor/autoload.php';

    use KSeven\IPTools\Ip;

    // Validating
    $status = Ip::isValid('192.168.1.1'); // true

    $status = Ip::isValid('192.168.1.256'); // false


    // ip2long, long2ip

    /// IPv4
    $long = Ip::ip2long('192.168.1.1'); // 3232235777

    $dec = Ip::long2ip('3232235777'); // 192.168.1.1

    /// IPv6
    $long = Ip::ip2long('fe80:0:0:0:202:b3ff:fe1e:8329'); // 338288524927261089654163772891438416681

    $dec = Ip::long2ip('338288524927261089654163772891438416681', true); // fe80::202:b3ff:fe1e:8329


    // Matching

    /// IPv4
    $status = Ip::match('192.168.1.1', '192.168.1.*'); // true

    $status = Ip::match('192.168.1.1', '192.168.*.*'); // true

    $status = Ip::match('192.168.1.1', '192.168.*.*'); // true

    $status = Ip::match('192.168.1.1', '192.168.0.*'); // false


    $status = Ip::match('192.168.1.1', '192.168.1/24'); // true

    $status = Ip::match('192.168.1.1', '192.168.1.1/255.255.255.0'); // true

    $status = Ip::match('192.168.1.1', '192.168.0/24'); // false

    $status = Ip::match('192.168.1.1', '192.168.0.0/255.255.255.0'); // false


    $status = Ip::match('192.168.1.5', '192.168.1.1-192.168.1.10'); // true

    $status = Ip::match('192.168.5.5', '192.168.1.1-192.168.10.10'); // true

    $status = Ip::match('192.168.5.5', '192.168.6.1-192.168.6.10');


    $status = Ip::match('192.168.1.1', array('122.128.123.123', '192.168.1.*', '192.168.123.124')); // true

    $status = Ip::match('192.168.1.1', array('192.168.123.*', '192.168.123.124'));

    /// IPv6

    $status = Ip::match('2001:cdba:0000:0000:0000:0000:3257:9652', '2001:cdba:0000:0000:0000:0000:3257:*'); // true

    $status = Ip::match('2001:cdba:0000:0000:0000:0000:3257:9652', '2001:cdba:0000:0000:0000:0000:*:*'); // true

    $status = Ip::match('2001:cdba:0000:0000:0000:0000:3257:9652',
                        '2001:cdba:0000:0000:0000:0000:3257:1234-2001:cdba:0000:0000:0000:0000:3257:9999'); // true


    $status = Ip::match('2001:cdba:0000:0000:0000:0000:3258:9652', '2001:cdba:0000:0000:0000:0000:3257:*'); // false

    $status = Ip::match('2001:cdba:0000:0000:0000:1234:3258:9652', '2001:cdba:0000:0000:0000:0000:*:*'); // false

    $status = Ip::match('2001:cdba:0000:0000:0000:0000:3257:7778',
                        '2001:cdba:0000:0000:0000:0000:3257:1234-2001:cdba:0000:0000:0000:0000:3257:7777'); // false

此代码可在Github上找到。欢迎提交Pull requests。

故障排除

如果您喜欢尝试前沿技术,请在PHP IP Tools问题页面上报告您发现的任何错误。

贡献

有关信息,请参阅CONTRIBUTING.md

许可证

请参阅此存储库中包含的LICENSE,以获取MIT许可证的完整副本,该项目受此许可证的许可。

致谢

完整的致谢名单请见CREDITS