我使用网站吸引用户'国家的IP地址,但该网站昨天停了一段时间,给我带来了很多问题。
如果file_get_contents()
失败,我怎能 IGNORE ?
这就是我正在尝试的但是它不起作用,如果它不起作用仍然打嗝:
if($details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"))){
$country = $details->country;
}
我已经看到其他答案,说关闭错误报告对我来说是一个坏的,坏的,坏的想法。
是否有更好的方法或更好的方式从IP地址获取国家/地区代码?
答案 0 :(得分:3)
您可以将stream context与ignore_errors
选项一起使用。
$context = stream_context_create(array('http' => array('ignore_errors' => true)));
$json = file_get_contents("http://ipinfo.io/{$ip}", false, $context);
此处的奖励是您还可以看到该网站发回给您的错误消息。
答案 1 :(得分:0)
我认为这段代码应该没问题:
try{
if($details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"))){
$country = $details->country;
}
} catch( Exception $e )
{
//log or whatever you want
}
答案 2 :(得分:0)
if (($cont = file_get_contents("http://ipinfo.io/{$ip}")) && is_object($details = json_decode($cont))) {
$country = $details->country;
}
答案 3 :(得分:-1)
file_get_contents
失败时返回false。
$country = "Unknown";
if(false !== ($details = json_decode(@file_get_contents("http://ipinfo.io/{$ip}")))){
$country = $details->country;
}
if($country !== "Unknown"){
// here you go
}