将实际IP与PHP中的部分IP进行比较

时间:2010-04-15 20:49:14

标签: php string ip-address substring

使用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 个答案:

答案 0 :(得分:4)

函数 strpos( $ haystack $ needle 会告诉你 $ haystack 字符串出现的字符串。

只要您仔细检查使用===比较运算符,就可以看到"12.34"是否出现在IP地址的开头。

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

查看documentation并注意警告。

答案 1 :(得分:2)

$parts = explode(".",$rem_address);
if ($parts[0] == "12" && $parts[1] == "34") echo "match";

答案 2 :(得分:0)

<?php
$full_address = getenv('REMOTE_ADDR');
$pattern = "/^" . preg_quote('12.34') . "/";
$count = preg_match($pattern, $full_address);
if ($count!=0) {
//match
}
?>

答案 3 :(得分:0)

更多方法,基于ip2long

(ip2long($_SERVER['REMOTE_ADDR']) & 0xFFFF0000) == 0x0C220000
! ((ip2long($_SERVER['REMOTE_ADDR']) & 0xFFFF0000) ^ 0x0C220000)
! ((ip2long($_SERVER['REMOTE_ADDR']) ^ 0x0C220000) >> 16)