2014-12-18 80 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; 
?>