ISP Retreival



I'm just not on the ball this week. How'd this one slip by?

Okay, first of all, your last line with the preg_match() isn't necessary. The docs for gethostbyaddr() say that if it can't resolve a host, it'll just return the IP again. So you can just do this:

function get_isp($ip) {
   $host = gethostbyaddr($ip);
   if($host == $ip) {
      $isp = '';
   } else {
      $host_parts = explode('.', $host);
      $host_numparts = count($host_parts);
      $isp = $host_parts[$host_numparts - 1] . '.' .
              $host_parts[$host_numparts - 2] . '.' .
              $host_parts[$host_numparts - 3];

   return $isp;

Now that you've got what we like to call a 'callback function', you can run it on every element of the array:

$ip_array = array('', '', '');

// run get_isp() on every element of $ip_array
array_walk($ip_array, 'get_isp');

// print them all out, if you want:
foreach($ip_array as $isp) {
   echo $isp . "<br />\n";

Like voodoo magic.

Oh, I took out that country code stuff, simply because I didn't want to deal with it. Put it back in at your leisure. I must say, I'm a little bit baffled by your logic. Why do you consider the last three parts of a user's hostname to be their ISP, or four if they have a country code? Why not the last two and three, respectively? I mean, my hostname is "". My ISP's home page is the last two parts (, not the last three. Anyway, I hope the above was helpful.