0

我在两个字符串中存储了两个 IP 地址值

a = '116.95.123.111'
b = '116.95.122.112'

我只想比较 ip 地址的前两部分,即116.95两个字符串中的部分,因为它在两个字符串中都相同,所以我的比较应该返回 true。如何在 PHP 中进行部分字符串比较?

4

3 回答 3

5

substr_compare是二进制安全的。

于 2009-10-22T10:39:47.573 回答
4

在这种特殊情况下(比较 IP 地址)

if((ip2long($a) >> 16) == (ip2long($b) >> 16)) echo "equal";
于 2009-10-22T12:10:55.823 回答
4

IP 地址可以包含前导零。爆炸时,可以将它们作为整数进行比较,从而忽略前导零。

$a = "116.95.123.111";
$b = "116.095.123.111"   // same IP as $a, but with leading zero

“干净”的方式将是这样的......

$ip1 = explode(".", $a);
$ip2 = explode(".", $b);

if (($ip1[0] == $ip2[0]) && (ip1[1] == $ip2[1])) {
  // success. Do something
} else {
  // not valid
}
于 2009-10-26T06:59:07.640 回答