开发者

comparing actual IP with partial IP in PHP

开发者 https://www.devze.com 2022-12-26 19:53 出处:网络
Using PHP I\'d like to compare an actual ip address to part of one, and see if it matches. For example I want to see if the address matches 12.34..

Using PHP I'd like to compare an actual ip address to part of one, and see if it matches. For example I want to see if the address matches 12.34..

<?php
$rem_address = getenv('REMOTE_ADDR');
$temp = substr 开发者_开发知识库($rem_address,0,6)
if ($temp == "12.34.") echo "It's a match";
?>

Is there an easier/better way to do this?


The function strpos($haystack, $needle) will tell you the first position in the $haystack string where the substring appears.

As long as you are careful to check the with the === comparison operator, you can see if "12.34" appears at the beginning of the IP address.

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

Check out the documentation and pay careful attention to the Warning.


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


Yet more methods, based on ip2long:

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


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

精彩评论

暂无评论...
验证码 换一张
取 消