PHP Regex для IP к местоположению API

Как я использовал бы Regex для получения информации о IP к Местоположению API

Это - API

http://ipinfodb.com/ip_query.php?ip=74.125.45.100

Я должен был бы получить Название страны, регион/Состояние и Город.

Я попробовал это:

$ip = $_SERVER["REMOTE_ADDR"];
$contents = @file_get_contents('http://ipinfodb.com/ip_query.php?ip=' . $ip . '');
$pattern = "/(.*)/";
preg_match($pattern, $contents, $regex);
$regex = !empty($regex[1]) ? $regex[1] : "FAIL";
echo $regex;

Когда я действительно повторяю $regex, я всегда получаю СБОЙ, как я могу зафиксировать это

5
задан Aaron Harun 27 June 2010 в 01:40
поделиться

3 ответа

Как предложил Аарон. Лучше не изобретать колесо, поэтому попробуйте разобрать его с помощью simplexml_load_string ()

// Init the CURL
$curl = curl_init();

// Setup the curl settings
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);

// grab the XML file
$raw_xml = curl_exec($curl);

curl_close($curl);

// Setup the xml object
$xml = simplexml_load_string( $raw_xml );

Теперь вы можете получить доступ к любой части переменной $ 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> 

Теперь, после того как вы загрузили эту XML-строку в simplexml_load_string (), вы можете получить доступ к IP-адресу ответа следующим образом.

$xml->IP;

simplexml_load_string () преобразует правильно сформированные файлы XML в объект, которым вы можете управлять. Единственное, что я могу сказать, это пойти и попробовать и поиграть с ним

РЕДАКТИРОВАТЬ:

Источник http://www.php.net/manual/en/function.simplexml-load-string.php

3
ответ дан 14 December 2019 в 13:26
поделиться

Если вам действительно нужно использовать регулярные выражения, то вам следует исправить то, которое вы используете. "|([^<]*)|i" будет работать лучше.

1
ответ дан 14 December 2019 в 13:26
поделиться

Вам действительно лучше использовать синтаксический анализатор XML для извлечения информации.

Например, this script разобирает его в массив.

Regex действительно не должен использоваться для синтаксического анализа HTML или XML.

2
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: