用于IP到位置API的PHP正则表达式

用于IP到位置API的PHP正则表达式,php,xml,regex,api,geoip,Php,Xml,Regex,Api,Geoip,我如何使用Regex获取IP地址API上的信息 这是API 我需要获得国家名称、地区/州和城市 我试过这个: $ip = $_SERVER["REMOTE_ADDR"]; $contents = @file_get_contents('http://ipinfodb.com/ip_query.php?ip=' . $ip . ''); $pattern = "/<CountryName>(.*)<CountryName>/"; preg_match($pattern,

我如何使用Regex获取IP地址API上的信息

这是API

我需要获得国家名称、地区/州和城市

我试过这个:

$ip = $_SERVER["REMOTE_ADDR"];
$contents = @file_get_contents('http://ipinfodb.com/ip_query.php?ip=' . $ip . '');
$pattern = "/<CountryName>(.*)<CountryName>/";
preg_match($pattern, $contents, $regex);
$regex = !empty($regex[1]) ? $regex[1] : "FAIL";
echo $regex;
$ip=$\u服务器[“远程地址”];
$contents=@file\u get\u contents('http://ipinfodb.com/ip_query.php?ip="("港币"),;
$pattern=“/(.*)/”;
preg_match($pattern,$contents,$regex);
$regex=!空($regex[1])$正则表达式[1]:“失败”;
echo$regex;

当我使用echo$regex时,我总是会失败。我如何解决这个问题呢?

您最好使用XML解析器来提取信息

例如,将其解析为数组


Regex真的不应该用于解析HTML或XML

正如亚伦所建议的。最好不要重新发明控制盘,因此请尝试使用simplexml_load_string()解析它

现在,您可以作为对象访问$xml变量的任何部分,这里是您发布的示例

<Response> 
    <Ip>74.125.45.100</Ip> 
    <Status>OK</Status> 
    <CountryCode>US</CountryCode> 
    <CountryName>United States</CountryName> 
    <RegionCode>06</RegionCode> 
    <RegionName>California</RegionName> 
    <City>Mountain View</City> 
    <ZipPostalCode>94043</ZipPostalCode> 
    <Latitude>37.4192</Latitude> 
    <Longitude>-122.057</Longitude> 
    <Timezone>0</Timezone> 
    <Gmtoffset>0</Gmtoffset> 
    <Dstoffset>0</Dstoffset> 
</Response> 
simplexml_load_string()将格式良好的XML文件转换为可操作的对象。我唯一能说的另一件事就是去尝试一下,玩一下

编辑:

来源

如果您确实需要使用正则表达式,那么您应该更正您正在使用的正则表达式<代码>”|([^正如其他人所报告的,如果不是在某些特定情况下,我宁愿不使用正则表达式来解析HTML、XHTML或XML。我必须快速验证返回的XML内容是否包含标记,并且我使用正则表达式;对于其他情况,如果返回的XML不是太大,则最好使用SimpleXML。或者简单地说:
$XML=simplexml_load_file($url);
Semantics;-)这是我提到的唯一一个真正可行的例子
<Response> 
    <Ip>74.125.45.100</Ip> 
    <Status>OK</Status> 
    <CountryCode>US</CountryCode> 
    <CountryName>United States</CountryName> 
    <RegionCode>06</RegionCode> 
    <RegionName>California</RegionName> 
    <City>Mountain View</City> 
    <ZipPostalCode>94043</ZipPostalCode> 
    <Latitude>37.4192</Latitude> 
    <Longitude>-122.057</Longitude> 
    <Timezone>0</Timezone> 
    <Gmtoffset>0</Gmtoffset> 
    <Dstoffset>0</Dstoffset> 
</Response> 
$xml->IP;