Мне нужно удалить динамическую информацию из файла HTML / PHP с PHP - PullRequest
0 голосов
/ 27 октября 2010

Я пытался вырезать информацию из динамически генерируемой страницы и затем вставить информацию в базу данных, это только один раз.Чтобы объяснить структуру:

У меня есть список из 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

просто в виде обычного текстахотите взять из него Lat, Long и City и записать его в базу данных, ОДНАКО, city, lat и long имеют различную длину.Есть ли способ убрать эту информацию с помощью preg_match или чего-то подобного, я пробовал, но не могу понять.Любые идеи с благодарностью.

Ответы [ 3 ]

0 голосов
/ 27 октября 2010
<?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 голосов
/ 27 октября 2010

Нет необходимости беспокоиться о парсере 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 голосов
/ 27 октября 2010

Вы должны использовать этот URL вместо:

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

Возвращает XML, который легче анализировать. Вы даже можете сделать это в AJAX таким образом \ o /

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...