PHPは手動ip2longとlong2ipを実装します
/ * * *测试 * / パブリック 関数testipAction(){ $ IP = '10 .58.101.175' ; エコー ip2long($のIP )。 エコー「<BR>」。 エコー $この - > myip2long($のIP )。 エコー「<BR>」。 エコー long2ip( '171599279' ); エコー「<BR>」。 エコー $この - > mylong2ip( '171599279' ); フロートを@return * | int型|文字列 * / 保護 機能 myip2long($のIP ){ $ newhex = '' ; // 配列に分け腹腔 $ ipsArrは = 爆発( ''、$のIp ;) foreachのを($ ipsArr AS $キー => $値){ // 小数点最大値は255であり、それを超えた場合、プロセスは直接返す IF($値 > 255 ){ 戻り '' ; } // 進数の小数変換 $ヘクス = dechex($の値が;) // 各最大値については、FFの16進数で、最大値は2 255 IPです 例のIP @:何の塗りつぶし0、1111年は16進数がない場合は1.1.1.1、小数点以下は4369 / / 0アップ場合、Hexが小数である16843009、01010101である IF(STRLEN($進)<2 ){ // 長さが2未満ヘクス場合、自動的に0を埋める、 $ヘクスを = '0'。$ヘクス; } $ newhex。= $ヘクス; } // 変換10進数に進 $ intStr = hexdec($ newhexを); 返す $ intStrを、 } * / * *彼のlong2ipを実現 * @param $ int型 * @return文字列 * / 保護 機能 mylong2ip($ int型){ // 4294967295のFFFFFF最大 $ int型 = $ int型 > 4294967295 4294967295 :? $のInt ; //は、16進に変換されます進 $ヘクス = dechex($ int型); // 発生IP 7を回避するために、我々は、手動で0を満たす IF(STRLEN($進)<8 ){ // 長さが0自動充填、8未満である $ヘクス =「0 」$六角; } // 2つのずつのグループ化。各グループは、それが除去される場合、最初のビットは、0であるかどうかを確認します。得られた値は、次に、アレイに接続された最後の配列を10進数に変換される。 ために($ I = 0; 私は$ <8; $ I + = 2 ){ $のA = SUBSTR($ヘクス、$ I、2 ); $ ippart = SUBSTR($ A、0 ,. 1 )、 IF($ ippart === '0' ){ $のA = SUBSTR($ A、1 ,. 1。); } $ aparr [] =hexdec($ A); } 戻り 破(、 '' $のaparr )。 }