Возникла производственная необходимость проверить входит ли ip в несколько разрешённых подсетей. Есть проверенное временем решение. В комментариях к ip2long есть примерно олимпиард “математических” вариантов проверки. Но в этот раз код должен в выполняться в “настроечном” файле, до загрузки всевозможных библиотек, т.е. проверка предполагалась быть максимально “домохозяйковой” – желательно без как-либо монструозных функций и нашёлся гениальный на мой взгляд способ с использованием version_compare:

if (version_compare($low_ip, $ip) + version_compare($ip, $high_ip) === -2) {
    echo "in range";
}

Это как стереокартинки – увидеть в 127.128.129.130 “PHP-standardized” version number strings дано не каждому…

ip in range
Tagged on:         

Leave a Reply

Your email address will not be published. Required fields are marked *