0

2 つの文字列に 2 つの IP アドレス値を保存しました

a = '116.95.123.111'
b = '116.95.122.112'

IPアドレスの最初の2つの部分、つまり116.952つの文字列の部分を比較したいだけで、両方の文字列で同じであるため、比較は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 に答える