outsanity / ip-analysis
用于分析IP地址的库
v3.1.0
2024-05-02 02:40 UTC
Requires
- php: >=7.4.3
- symfony/http-foundation: >=5.4
Requires (Dev)
- outsanity/phpcs: >=0.4.0
- phpstan/phpstan: ^1.10.39
- phpunit/phpunit: ^9.6.13
- rector/rector: ^0.16.0
- squizlabs/php_codesniffer: ^3.7.2
- symfony/serializer: >=5.4
Suggests
- symfony/serializer: Serialization support for SpecialAddressBlock
README
分析IP地址以帮助程序识别全球可达或不可达的IP,并获取有关IP的详细信息。
安装
如果您使用composer,请运行
composer require outsanity/ip-analysis
用法
<?php require 'vendor/autoload.php'; use Outsanity\IpAnalysis\IpAnalysis; $ip = new IpAnalysis('127.0.0.1'); echo 'documentation: ' . ($ip->isDocumentation() ? 'yes' : 'no') . "\n"; // 192.0.2.65, 2001:db8:1:3::2 echo 'global: ' . ($ip->isGlobal() ? 'yes' : 'no') . "\n"; // 8.8.8.8, 2001:4860:4860::8888 echo 'loopback: ' . ($ip->isLoopback() ? 'yes' : 'no') . "\n"; // 127.0.0.1, ::1 echo 'multicast: ' . ($ip->isMulticast() ? 'yes' : 'no') . "\n"; // 224.0.1.1, ff00::101 echo 'private: ' . ($ip->isPrivateNetwork() ? 'yes' : 'no') . "\n"; // 10.0.0.1, 192.168.0.1, fd11:1111:1111::1 echo 'subnet: ' . ($ip->isLocalNetwork() ? 'yes' : 'no') . "\n"; // 169.254.0.1, fe80::6450:6a14:93ba:de09
预期输出
documentation: no
global: no
loopback: yes
multicast: no
private: no
subnet: no
构建支持
第二个包,IP Analysis Helper,将IANA .csv
规则文件转换为 SpecialAddressBlock
实体。这些实体位于 Outsanity\IpAnalysis\SpecialAddressBlock\Factory::$allRaw
。
感谢
规则来自IANA IPv4特殊地址注册表和IANA IPv6特殊地址注册表。
额外帮助来自维基百科保留IP地址页面和RIPE IPv6参考卡。