comparing actual IP with partial IP in PHP
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
}
?>
精彩评论