Функция для определения принадлежности IP к подсети (PHP)

Функция для опеределния подсети по маске и ип-адресу.

Код - Функция для определения принадлежности ип к подсети
<?php

/**
 * Функция применяет маску на ip и возвращет подсеть
 *
 * @param string $ip IP-адрес вида 192.168.0.1
 * @param string $mask Маска подсети виды 255.255.255.0
 * @return string Подсеть
 */
function applyNetMask($ip, $mask)
{
    if ( is_string($ip  ) ) $ip   = ip2long($ip  );
    if ( is_string($mask) ) $mask = ip2long($mask);
    
    return long2ip(sprintf('%u', $ip & $mask));
}

?>

Простой пример использования - функция, которая проверяет, является ли ip-адрес локальным.

Код - Функция для определения явлеяется ли адрес локальным
<?php

/**
 * Функция определяет является ли IP-адрес локальным
 *
 * @param string $ip IP-адрес
 * @return boolean
 */
function isLocalIp( $ip )
{
    if ( '10.0.0.0'    === applyNetMask($ip, '255.0.0.0'  ) ) return true;
    if ( '72.16.0.0'   === applyNetMask($ip, '255.255.0.0') ) return true;
    if ( '127.0.0.0'   === applyNetMask($ip, '255.0.0.0'  ) ) return true;
    if ( '192.168.0.0' === applyNetMask($ip, '255.255.0.0') ) return true;
    
    return false;
}

?>

Тестирование

Код - Тестирование функций
<?php

// Тестирование функций
echo '192.169.56.12 is ', isLocalIp('192.169.56.12') ? 'local' : 'world', PHP_EOL;
echo '127.123.41.21 is ', isLocalIp('127.123.41.21') ? 'local' : 'world', PHP_EOL;
echo '79.45.67.12   is ', isLocalIp('79.45.67.12'  ) ? 'local' : 'world', PHP_EOL;
echo '10.23.42.122  is ', isLocalIp('10.23.42.122' ) ? 'local' : 'world', PHP_EOL;

?>

Результат

192.169.56.12 is world
127.123.41.21 is local
79.45.67.12   is world
10.23.42.122  is local