Поскольку вы имеете дело с IP-адресами, вероятно, их проще рассматривать как целые числа, а не строки. Для этого вы можете использовать функцию ip2long ()
.
Вот рабочая функция, которая поможет вам:
function ipbetweenrange($needle, $start, $end) {
if((ip2long($needle) >= ip2long($start)) && (ip2long($needle) <= ip2long($end))) {
return true;
}
return false;
}
$ipstart = '70.42.249.1';
$ipend = '70.42.249.255';
echo ipbetweenrange('70.42.249.1', $ipstart, $ipend); // true
echo ipbetweenrange('70.42.249.255', $ipstart, $ipend); // true
echo ipbetweenrange('70.42.249.128', $ipstart, $ipend); // true
echo ipbetweenrange('192.168.0.1', $ipstart, $ipend); // false
foreach( range( 1, 255 ) as $number )
{
if( $userIp == '70.42.249.' . $number )
// we have a match, do whatever you want
}
Что-то в этом роде. И да, вероятно, это следует переместить в Stackoverflow.