ホームページ >バックエンド開発 >PHPチュートリアル >PHPでip2cidrを実装する方法(複数のcidrを生成)

PHPでip2cidrを実装する方法(複数のcidrを生成)

WBOY
WBOYオリジナル
2016-06-13 12:04:161546ブラウズ

PHP で ip2cidr (複数の cidr を生成) を実装する方法
複数の cidr を生成する関数はありますか? たとえば、 1.120.0.0 1.159.255.255 Generate 1.120.0.0/13 1.128.0.0/11
--- ---解決策-------------------
分割はそれほど難しくないのですが、分割点はどのように決めるのでしょうか?
例:
echo ip2cidr('1.120.0.0', '1.127.255.255') //1.120.0.0/13
echo ip2cidr('1.128.0.0', '1.159.255.255'); / /1.128.0.0/11
は逆アセンブリメソッドです
echo ip2cidr('1.120.0.0', '1.151.255.255') //1.120.0.0/11
echo ip2cidr('1.152.0.0); ', '1.159.255.255'); //1.152.0.0/13
別の逆アセンブリメソッド


echo ip2cidr('1.120.0.0', '1.159.255.255') ;
失敗の理由は、マスクが
00000000001001111111111111111111111111111111111111111111111111111111111111111111111111111111 ip2 であるためです。 long ('1.120.0.0')); //1.151.255.255
つまり、2 番目の逆アセンブリ方法はマシンによって実現できますが、最初の逆アセンブリ方法は1 つは手動でのみ実現できるようです



------解決策-----

問題をさらに分析してください
00000001011101110000000000000000 1.119.0.0 0000000101111
0000000000000000000 1.120.0.0

00000001011110010000000000000000 1.121.0.0
0000000101111010000000000000000 1.122.0.0
00000001011110110000000000000000 1.123.0.0
000000010111110 00000000000000000 1.124.0.0
00000001011111010000000000000000 1 .125.0.0
00000001011111100000000000000000 1.126.0.0
00000001011111110000000000000000 1.127.0.0
00000001100000000000000000000000 1.128.0.00000000 1100000010000000000000000 1.129.0.0
00000001100000100000000000000000 1.130.0.000000001100000110000000000000000 1.131.0.0000000011000010000000 00000000000 1.132.0
0000000110000101000000000000000 1.133.0.0
0000000110000110000000000000000 1.134.0.0
0000000110000111 1.137.0.0
00000001100010100000000000000000 1.138.0.0
00000001100010110000000000000000 1.139.0.0
00000001100011000000000000000000
00000001100011010000000000 000000 1.141.0.0
00000001100011100000 1.144.0.0
00000001100100010000000000000000 1.145.0.0
000000011001001000 00000000000000 1.146.0.0
00000001100100110000000000000000 1.147.0.0
00000001100101000000000000000000 1.148.0.0
00000001100101010000 1.151.0.0
00000001100110000000000000000000 .0.0
00000001100110010000000000000000 1.153.0.0
00000001100110100000000000000000 1.154.0.0
000000011001101100 00000000000000 1.155.0.0
0000000110011100000000000 0000000 1.156.0.0
00000001100111010000000000000000 1.157.0.0
00000001100111100000000000000000 1.158.0.0

00000001100
11 1110000000000000000 1.159.0.0
00000001101000000000000000000000 1.160.0.0


-----解決策-- ----------------------------

終了
1.120.0.0/13,1.128.0.0/ 11
1.120.0.0/15,1.112.0.0/12,1.128.0.0/15,1.128.0.0/13,1.136.0.0/15,1.138.0.0/111.120.0.0/14,1.120。 0.0/13、1.128.0.0/14、1.128.0.0/12、1.144.0.0/14、1.148.0.0/11

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。