<?
$ip = '95.79.1.36'; //russian ip for test
$str = 'http://ipgeobase.ru:7020/geo?ip='.$ip;
$content = file_get_contents($str);
preg_match_all('#<country>(.*)(</country>)#Usi', $content, $matches);
$country = $matches[0][0];
preg_match_all('#<city>(.*)(</city>)#Usi', $content, $matches);
$city = $matches[0][0];
if($country == 'RU'){
echo 'City: '.$city.'';
}else{
echo 'Country: '.$country.'';
}
?>
问题是 $ country =='RU',不行,我的问题是为什么?
谢谢)))
答案 0 :(得分:3)
您的服务器可能不是allow_url_fopen
(php.ini指令)。无论如何,您正在为这个特定案例寻找的技术是cURL:https://php.net/curl。
我很高兴能够专门提供有关您的代码的更多解释,甚至在您正确编辑问题后提供cURL代码示例,并提供更多信息和尝试。
答案 1 :(得分:3)
您可能不应该使用Regex解析HTML / XHTML / XML。请参阅:RegEx match open tags except XHTML self-contained tags
我建议使用PHP的SimpleXML解析器。以下对我有用:
<?php
$ip = '95.79.1.36'; //russian ip for test
$str = 'http://ipgeobase.ru:7020/geo?ip='.$ip;
$results = simplexml_load_file($str);
$country = $results->ip->country;
$city = $results->ip->city;
if($country == 'RU'){
echo 'City: '.$city.'';
}else{
echo 'Country: '.$country.'';
}
?>