note 109779 added to function.inet-pton

From: Date: Mon, 20 Aug 2012 12:21:13 +0000
Subject: note 109779 added to function.inet-pton
Groups: php.notes 
Request: Send a blank email to php-notes+get-190140@lists.php.net to get a copy of this message
I noticed that inet_pton() doesn't like compressed single hex groups i.e. ::ffff:ffff:ffff:ffff:ffff:ffff:ffff and ::ffff:ffff:ffff:ffff:ffff:127.0.0.1 work around and/or PHP 4.0.1+ add-in: <?php function ip2bin($ip) { $s = $ipv4 = ''; if(strpos($ip, ':') !== false) { if(!($l = preg_match_all('#(?|::|(?|\d{1,3}\.){3}\d{1,3}|[0-9a-f]{1,4})#i', $ip, $m)) || $l > 8) return false; foreach($m[0] as $p) { if($p == '::') $s .= str_repeat('0000', 8 - $l + (strpos($m[0][$l-1], '.') === false)); else if(strpos($p, '.') !== false) $ipv4 = ip2bin($p); else $s .= str_pad($p, 4, '0', STR_PAD_LEFT); } if($ipv4 === false) return false; return pack('H*', $s). $ipv4; } else if(strpos($ip, '.') !== false) { $x = explode('.', $ip); if(count($x) != 4) return false; foreach($x as $i) $s .= chr((int) $i); return $s; } return false; } var_dump( @inet_pton('::ffff:ffff:ffff:ffff:ffff:ffff:ffff'), // bool(false) ip2bin('::ffff:ffff:ffff:ffff:ffff:ffff:ffff'), @inet_pton('::ffff:ffff:ffff:ffff:ffff:127.0.0.1'), // bool(false) ip2bin('::ffff:ffff:ffff:ffff:ffff:127.0.0.1') ); ?> ---- Server IP: 69.147.83.197 Probable Submitter: 67.185.164.25 ---- Manual Page -- http://www.php.net/manual/en/function.inet-pton.php Edit -- https://master.php.net/note/edit/109779 Del: integrated -- https://master.php.net/note/delete/109779/integrated Del: useless -- https://master.php.net/note/delete/109779/useless Del: bad code -- https://master.php.net/note/delete/109779/bad+code Del: spam -- https://master.php.net/note/delete/109779/spam Del: non-english -- https://master.php.net/note/delete/109779/non-english Del: in docs -- https://master.php.net/note/delete/109779/in+docs Del: other reasons-- https://master.php.net/note/delete/109779 Reject -- https://master.php.net/note/reject/109779 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#190140) next »