2010-10-27 45 views
0

我一直試圖從動態生成的頁面中去除信息,然後將信息插入到數據庫中,這只是一次性的事情。解釋佈局:我需要從PHP中去除html/php文件中的動態信息

我目前在我的數據庫中有700個IP地址的列表,但他們沒有位置鏈接到他們,我使用以下代碼從hostip.info中檢索信息並將返回的數據插入在循環的變量:


dbconnect(); 
$tbl_name = 'Votes'; 
$sql = "SELECT * FROM $tbl_name LIMIT 10"; //THIS LIMIT IS ONLY A TEMPORARY // 
$result=mysql_query($sql); 
$rows=mysql_fetch_array($result); 
while($rows=mysql_fetch_array($result)) { 
    echo $rows['UIP']; //This is the IP stored currently 
    $file_l = file_get_contents('http://api.hostip.info/get_html.php?ip='.$rows['UIP'].'&position=true'); 
} 

對於每個IP測試從hostip.info返回的信息看起來有點像這樣:

Country: UNITED KINGDOM (GB) 
City: (Unknown city) 
Latitude: 
Longitude: 
IP: 79.170.40.245 

只是在純文本,我基本上要搶緯度,龍和城市從它和重擊在數據庫中,但是,城市,拉特和長都是不同的長度。有沒有什麼方法可以用preg_match或類似的東西去除這些信息,我已經嘗試過,但無法弄清楚。任何想法不勝感激。

回答

0

你應該使用這個網址來代替:

http://api.hostip.info/?ip=$rows['UIP'] 

它返回XML哪一個更容易解析。你甚至可以做到這一點在AJAX這樣\ O/

Source

+0

我是如此巨大的痙攣。乾杯。我應該想到嘗試XML。 – 2010-10-27 12:37:12

0
<?php 
$str="Country: UNITED KINGDOM (GB) City: (Unknown city) Latitude: Longitude: IP: 79.170.40.245"; 
$arr=explode(" ",$str); 
echo "<pre>"; 
print_r($arr); 
?> 
0

無需與東西這麼簡單的XML解析器來打擾。

while($rows=mysql_fetch_array($result)) 
{ 
    echo $rows['UIP']; //This is the IP stored currently 
    $file_l = file_get_contents('http://api.hostip.info/get_html.php?ip='.$rows['UIP'].'&position=true'); 

    $lines = explode("\n", $file_l); 
    $values = array(); 
    foreach($lines as $line) 
    { 
     $s = explode(':', $line); 
     $values[$s[0]] = trim($s[1]); 
    } 
    doSomethingWith($values['City'], $values['Latitude'], $values['Longitude']); 
} 
+0

真棒,這正是我所需要的,歡呼你的所有輸入 – 2010-10-29 06:10:35