<?php

 
# PHP_IRC_IPv4_Encode(ip string);
 # binary safe
 #
 # Description: Convert an IPv4 address to an ID for abuse tracking.
 #
 # Returns: Returns ID.

 
function PHP_IRC_IPv4_Encode($ip) {

  
$allowed = array (
   
'0' => true,
   
'1' => true,
   
'2' => true,
   
'3' => true,
   
'4' => true,
   
'5' => true,
   
'6' => true,
   
'7' => true,
   
'8' => true,
   
'9' => true
  
);

  
$size strlen($ip);
  
$j=0;
  for (
$i=0;$i<$size;$i++) {
   if (@
$allowed[$ip[$i]]) {
    
$ipblocks[$j] .= $ip[$i];
   }
   elseif(
$ip[$i] == '.') {
    
$j++;
   }
   else {
    return 
null;
   }
  }

  if (
   
count(@$ipblocks) == &&
   
strlen(@$ipblocks['0']) >= &&
   
strlen(@$ipblocks['1']) >= &&
   
strlen(@$ipblocks['2']) >= &&
   
strlen(@$ipblocks['3']) >= &&
   (
$ipblocks['0']['0'] != '0' || (strlen($ipblocks['0']) == && $ipblocks['0']['0'] == '0')) &&
   (
$ipblocks['1']['0'] != '0' || (strlen($ipblocks['1']) == && $ipblocks['1']['0'] == '0')) &&
   (
$ipblocks['2']['0'] != '0' || (strlen($ipblocks['2']) == && $ipblocks['2']['0'] == '0')) &&
   (
$ipblocks['3']['0'] != '0' || (strlen($ipblocks['3']) == && $ipblocks['3']['0'] == '0')) &&
   
strlen(@$ipblocks['0']) <= &&
   
strlen(@$ipblocks['1']) <= &&
   
strlen(@$ipblocks['2']) <= &&
   
strlen(@$ipblocks['3']) <= &&
   
$ipblocks['0'] >= &&
   
$ipblocks['1'] >= &&
   
$ipblocks['2'] >= &&
   
$ipblocks['3'] >= &&
   
$ipblocks['0'] <= 255 &&
   
$ipblocks['1'] <= 255 &&
   
$ipblocks['2'] <= 255 &&
   
$ipblocks['3'] <= 255
  
) {

   
$idblocks[] = str_pad(base_convert($ipblocks['0'], 1016), 2'0'STR_PAD_LEFT);
   
$idblocks[] = str_pad(base_convert($ipblocks['1'], 1016), 2'0'STR_PAD_LEFT);
   
$idblocks[] = str_pad(base_convert($ipblocks['2'], 1016), 2'0'STR_PAD_LEFT);
   
$idblocks[] = str_pad(base_convert($ipblocks['3'], 1016), 2'0'STR_PAD_LEFT);

   
$id $idblocks[0].$idblocks[1].$idblocks[2].$idblocks[3];

   return 
$id;

  }

 }

 
# Ver 0.0.4$

?>