note 52515 added to function.inet-ntop

From: Date: Wed, 04 May 2005 11:43:44 +0000
Subject: note 52515 added to function.inet-ntop
Groups: php.notes 
Request: Send a blank email to php-notes+get-88911@lists.php.net to get a copy of this message
For people who need this function but don't have it, I could write a function which should give almost the same result. <?php function my_inet_ntop($ip) { if (strlen($ip)==4) { // ipv4 list(,$ip)=unpack('N',$ip); $ip=long2ip($ip); } elseif(strlen($ip)==16) { // ipv6 $ip=bin2hex($ip); $ip=substr(chunk_split($ip,4,':'),0,-1); $ip=explode(':',$ip); $res=''; foreach($ip as $seg) { while($seg{0}=='0') $seg=substr($seg,1); if ($seg!='') { $res.=($res==''?'':':').$seg; } else { if (strpos($res,'::')===false) { if (substr($res,-1)==':') continue; $res.=':'; continue; } $res.=($res==''?'':':').'0'; } } $ip=$res; } return $ip; } ?> I followed IPv6 reprenstation rules : - A series of "0"s in a 16bit block can by represented by "0". - A series of blocks containing only "0"s can be suppressed and represented by "::" (this can be done only once) (source : http://www.ipv6style.jp/en/faq/latest.shtml#2003022112 ) Example: <?php $packed = str_repeat(chr(0), 15) . chr(1); $expanded = my_inet_ntop($packed); /* Outputs: ::1 */ echo $expanded; ?> I checked in CVS (2005-04-25) and didn't find the inet_ntop function (I really needed to handle IPv6) so I implemented it myself ! ---- Manual Page -- http://www.php.net/manual/en/function.inet-ntop.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+52515 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+52515&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+52515&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+52515&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+52515&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+52515&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+52515&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#88911) next »