2009-05-26 31 views
7

我需要從一個IP地址使用PHP修剪最後一個八位字節。基本上我試圖在第三個點後刪除任何數字。我想知道是否有一個開箱即用的解決方案?因爲我的正則表達式能力基本上是最基本的。非常感謝。修剪IP地址八位組

回答

17
$trimmed = implode(".", array_slice(explode(".", $ip), 0, 3)); 

$trimmed = substr($ip, 0, strrpos($ip, ".")); 

或可能

$trimmed = preg_replace("/(\d{1,3})\.(\d{1,3}).(\d{1,3}).(\d{1,3})/", '$1.$2.$3', $ip); 

更數學的方式,不能刪除最後一個數字,而是用0來替換它:

$newIp = long2ip(ip2long("192.168.0.10") & 0xFFFFFF00); 
+2

我還能要求什麼?祝你有美好的一天! :) – 2009-05-26 09:39:51

0

Regexp vatiant

$ip = '192.168.20.10'; 
preg_replace_callback(
    '/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/' 
    , create_function('$matches', '$matches[4] = "0"; array_shift($matches); return implode(".", $matches);') 
    , $ip 
); 

你也可以使用ip2long和long2ip ......但沒有關於「一體化解決方案」與它的想法:

$ip = ip2long('192.168.20.10') - 10; 
echo long2ip($ip); 
2

這將刪除最後一個數字和點。

$trimmed = preg_replace('/\.\d{1,3}$/', '', $ip);