2011-01-28 4 views
1

私は現在、次のAPI呼び出しの値を抽出しようとしているが: http://api.hostip.info/get_html.php?ip=12.215.42.19&position=truehostip.info APIレスポンスデータ抽出

結果は多分べきであるように、配列:

$my = array(
    'country_name' => 'UNITED STATES', 
    'country_iso' => 'US', 
    'city_name' => 'Sugar Grove, IL', 
    'latitude' => 41.7696, 
    'longitude' => -88.4588 
); 

誰でも巧妙なを持っていますこれを行うには正規表現ですか?

ありがとうございます!

+0

彼らは 'get_xml.php'を持っているようですが、これは解析がはるかに簡単ですが、ドキュメントにはありません。おそらく、その1つが正式なものかどうかを尋ね、simpleXMLを使ってそれを解析すると、 –

+0

が真実だが、それを解析するのに問題があった。別の質問を開くつもりだと思う。ありがとう – n00b

答えて

4
$response = file('http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true'); 
foreach ($response as $line) { 
    $line = trim($line); 
    if (!empty($line)) { 
     $parts = explode(': ', $line); 
     $array[$parts[0]] = $parts[1]; 
    } 
} 

print_r($array); 

出力:

Array 
(
    [Country] => UNITED STATES (US) 
    [City] => Sugar Grove, IL 
    [Latitude] => 41.7696 
    [Longitude] => -88.4588 
    [IP] => 12.215.42.19 
) 
2

Country: (.*?) \((.*?)\)\nCity: ([^\n]*)\n\nLatitude: ([-0-9.]*)\nLongitude: ([-0-9.]*)\n

しかし、より良い多くの正規表現のを使用します。

Country: (.*?) \(([^\n]*)\) 
City: ([^\n]*) 
Latitude: ([-0-9.]*) 
Longitude: ([-0-9.]*) 
1

はまだコメントすることはできません。

@Dan Grossman - 私の2セント:file()関数にFILE_SKIP_EMPTY_LINESおよび/またはFILE_IGNORE_NEW_LINESフラグを追加するので、空の行を確認する必要はありません。

私はregexp以外のバージョンを使用します。

関連する問題