Возникла производственная необходимость проверить входит ли 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
Ах ты ж хитрая опа 🙂