Skip to main content

PHP function to check if an IPv4 address is from a private range.

<?php

/**
 * Check if IPv4 address is from a private range.
 *
 * @param string $ip
 * @return boolean true if IPv4 address is in private range.
 */
function ip_is_private ($ip)
{
    $pri_addrs = array(
        '10.0.0.0|10.255.255.255',
        '172.16.0.0|172.31.255.255',
        '192.168.0.0|192.168.255.255',
        '169.254.0.0|169.254.255.255',
        '127.0.0.0|127.255.255.255'
    );

    $long_ip = ip2long($ip);

    if ($long_ip != - 1) {

        foreach ($pri_addrs as $pri_addr) {

            list ($start, $end) = explode('|', $pri_addr);

            // IF IS PRIVATE
            if ($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
                return (TRUE);

        }
    }

    return (FALSE);
}

?>