сравнивая фактический IP с частичным IP в PHP - PullRequest
0 голосов
/ 16 апреля 2010

Используя PHP, я хотел бы сравнить фактический IP-адрес с частью одного и посмотреть, соответствует ли он. Например, я хочу посмотреть, соответствует ли адрес 12.34. .

<?php
$rem_address = getenv('REMOTE_ADDR');
$temp = substr ($rem_address,0,6)
if ($temp == "12.34.") echo "It's a match";
?>

Есть ли более простой / лучший способ сделать это?

Ответы [ 4 ]

4 голосов
/ 16 апреля 2010

Функция strpos ( $ haystack , $ needle ) сообщит вам первую позицию в строке $ haystack , где появляется подстрока.

Пока вы тщательно проверяете оператор сравнения ===, вы можете видеть, появляется ли "12.34" в начале IP-адреса.

if (strpos ($rem_address, "12.34.") === 0) echo "It's a match";

Ознакомьтесь с документацией и обратите особое внимание на Предупреждение.

2 голосов
/ 16 апреля 2010
$parts = explode(".",$rem_address);
if ($parts[0] == "12" && $parts[1] == "34") echo "match";
0 голосов
/ 16 апреля 2010

Еще больше методов, основанных на ip2long:

(ip2long($_SERVER['REMOTE_ADDR']) & 0xFFFF0000) == 0x0C220000
! ((ip2long($_SERVER['REMOTE_ADDR']) & 0xFFFF0000) ^ 0x0C220000)
! ((ip2long($_SERVER['REMOTE_ADDR']) ^ 0x0C220000) >> 16)
0 голосов
/ 16 апреля 2010
<?php
$full_address = getenv('REMOTE_ADDR');
$pattern = "/^" . preg_quote('12.34') . "/";
$count = preg_match($pattern, $full_address);
if ($count!=0) {
//match
}
?>
...