2014-12-18 29 views
2

我使用ipinfo.io對於一些簡單的查詢,但我有echo $details->org;它輸出「AS15169谷歌公司」一個小問題,但我想只有ISP一部分,所以「谷歌公司」。ipinfo.io filter AS #### out?

示例代碼:

<? 
function ip_details($ip) { 
    $json = file_get_contents("http://ipinfo.io/{$ip}"); 
    $details = json_decode($json); 
    return $details; 
} 
$details = ip_details($_SERVER['REMOTE_ADDR']); 
echo $details->org; 
?> 

輸出示例:http://ipinfo.io/8.8.8.8/org

需要一些幫助,任何人嗎?

回答

0

如果你只是想在組織字段中,您可以查詢http://ipinfo.io/{$ip}/org這將給你的組織作爲一個字符串,這將節省您不必解析任何JSON:

$org = file_get_contents("http://ipinfo.io/{$ip}/org"); 

我們可以分割組織串入ASN和名稱由爆炸第一空間:

list($asn, $name) = explode(" ", $org, 2); 

把所有我們相聚:

function org_name($ip) { 
    $org = file_get_contents("http://ipinfo.io/{$ip}/org"); 
    list($asn, $name) = explode(" ", $org, 2); 
    return $name; 
} 

echo org_name("8.8.8.8"); 
// => Google Inc. 
echo org_name("189.154.55.170"); 
// => Uninet S.A. de C.V. 
echo org_name("172.250.147.230"); 
// => Time Warner Cable Internet LLC 

請參閱http://ipinfo.io/developers瞭解有關不同端點和速率限制的更多詳細信息。

0

使用正則表達式來查找以AS開頭並且有一個或多個數字後跟一個空格的單詞邊界之間的任何內容,然後用空白字符串替換它。

我不擅長正則表達式,所以有人可能會提出更好的解決方案。但我在PHP Live Regex進行了測試,並且它適用於我嘗試的少數測試案例。

<? 
function ip_details($ip) { 
    $json = file_get_contents("http://ipinfo.io/{$ip}"); 
    $details = json_decode($json); 
    return $details; 
} 
$details = ip_details($_SERVER['REMOTE_ADDR']); 
$org = preg_replace('/\bAS\d+\s\b/i', '', $details->org); 
echo $org; 
?>