Mailinglisten-Archive |
Thomas 'Balu' Walter wrote: > > Noe ganz normal IPv4 (?). > > Normale IP: 212. 172. 185. 1 > Umgewandelt in Binaer: 11010100 10101100 10111001 00000001 > Diese Binaerzahl in Dezimal: 3568089345 also quasi sowas: von 3568089345 nach 212.172.185.1 function long2ip($longip) { $oct1=bcdiv($longip,16777216,0); $longip=bcmod($longip,16777216); $oct2=bcdiv($longip,65536,0); $longip=bcmod($longip,65536); $oct3=bcdiv($longip,256,0); $oct4=bcmod($longip,256); return($oct1.".".$oct2.".".$oct3.".".$oct4); } und andersrum: function ip2long($ip) { $oct=explode(".",$ip); return($oct[0]*16777216+$oct[1]*65536+$oct[2]*256+$oct[3]); } geht mit sicherheit auch ohne bc... war mal irgendwann eine meiner ersten php-basteleien. die ips so in der datenbank zu speichern, erfordert jedoch noch ganz andere sachen. z.b. versuch mal eine wildcard-suche nach 137.226.2?1.* zu realisieren o.ae... da faengste dann an, ganz gruselig bitweise zu vergleichen. daher hab ich es damals wieder verworfen und speicherte die ip's wieder als strings. gruss, markus
php::bar PHP Wiki - Listenarchive