我需要使用 PHP 从 html/php 文件中删除动态信息
Posted
技术标签:
【中文标题】我需要使用 PHP 从 html/php 文件中删除动态信息【英文标题】:I need to strip dynamic information from a html/php file with PHP 【发布时间】:2010-10-27 12:24:18 【问题描述】:我一直在尝试从动态生成的页面中提取信息,然后将信息插入数据库,这只是一次性的事情。解释布局:
我的数据库中目前有一个包含 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 或类似的东西来剥离这些信息,我试过但无法弄清楚。任何想法都非常感谢。
【问题讨论】:
【参考方案1】:你应该改用这个网址:
http://api.hostip.info/?ip=$rows['UIP']
它返回更易于解析的 XML。你甚至可以在 AJAX 中这样做 \o/
Source
【讨论】:
我非常痉挛。干杯。我应该考虑尝试 XML。【参考方案2】:无需为如此简单的事情而使用 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']);
【讨论】:
太棒了,这正是我所需要的,为您的所有输入喝彩【参考方案3】:<?php
$str="Country: UNITED KINGDOM (GB) City: (Unknown city) Latitude: Longitude: IP: 79.170.40.245";
$arr=explode(" ",$str);
echo "<pre>";
print_r($arr);
?>
【讨论】:
以上是关于我需要使用 PHP 从 html/php 文件中删除动态信息的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 wget 从网站下载所有文件(但不是 HTML)?
如何使用 Ajax 函数从 php 服务器获取会话变量? (PHP HTML JS Ajax)