Heim >Backend-Entwicklung >PHP-Tutorial >PHP中如何将ip地址转成十进制数_PHP教程

PHP中如何将ip地址转成十进制数_PHP教程

WBOY
WBOYOriginal
2016-07-21 14:53:16991Durchsuche

   PHP 中如何将ip地址转成十进制数呢?现在PHP中有很多时候都会用到ip地址,但是这个ip地址获取的时候都不是10进制的。那么PHP中如何将ip地址转成十进制数就是我们比较头疼的事情了,下面两种方法是我整理处理来相对比较简单的IP地址转成十进制数的方法。希望能对大家有所帮助。

  方法一:

  代码如下

  public function ipToLong(){

  $ip = $_SERVER['REMOTE_ADDR'];

  $ip = explode('.', $ip);

  $ip = array_reverse($ip);//数组反转

  $r = 0;

  for($i=0,$j=count($ip); $i

  $r += $ip[$i] * pow(256, $i);

  }

  $r = sprintf("%u", $r);

  echo $r;

  }

  方法二:

  代码如下

  public function ipToLong(){

  $ip = $_SERVER['REMOTE_ADDR'];

  $ip = explode('.',$ip);

  $r = ($ip[0]

  if($r

  echo $r ;

  }

  两个结果在本地服务器中的结果都是3232235877,运用的ip是192.168.1.101。我们用ping 192.168.1.101 和 ping 3232235877来进行检测,看是否一样。

  可能有些朋友不知道mysql与php中都提供了IP转换十进制数函数

  MySQL 提供了INET_ATON 和 INET_NTOA 两个函数来进行地址和整数之间的转换。

  1. IP 由点分格式,转换为数字格式。

  代码如下

  mysql> select inet_aton('127.0.0.1');

  +------------------------+

  | inet_aton('127.0.0.1') |

  +------------------------+

  | 2130706433 |

  +------------------------+

  1 row in set (0.00 sec)

  2. IP 由数字格式转换为点分格式。

  代码如下

  mysql> select inet_ntoa(2130706433);

  +-----------------------+

  | inet_ntoa(2130706433) |

  +-----------------------+

  | 127.0.0.1 |

  +-----------------------+

  1 row in set (0.00 sec)

  php可直接使用ip2long函数

  代码如下

  echo ip2long('192.168.1.38');

  输出:3232235814

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/371387.htmlTechArticlePHP 中如何将ip地址转成十进制数呢?现在PHP中有很多时候都会用到ip地址,但是这个ip地址获取的时候都不是10进制的。那么PHP中如何将ip地址...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn