我对PHP平庸,对XML无知......如果你能详细一点,它会帮助我学习。
我正在尝试使用PHP编程来执行此链接的脚本... http://ws.geonames.org/postalCodeSearch?postalcode=VARIABLE_ZIP&country=US。 VARIABLE_ZIP是输入表单的实际邮政编码,将在上面的链接中提交信息。该链接的输出创建了一个我不想在我的网站上任何地方显示的XML页面。
我想要做的是将XML数据Latitude和Longitude值作为php中的变量捕获并存储到数据库中。
1)我有一张表格
2)用户将其邮政编码输入表格
3)提交表单后:我希望代码能够捕获链接生成的XML数据,并添加了邮件代码变量:http://ws.geonames.org/postalCodeSearch?postalcode=90210&country=US(我不希望此页面显示在任何地方,我只是想捕获数据)
4)我想将这些变量带回PHP,以便将它们存储在我的数据库中
*对我来说,第3步是一个未知的过程。 这就是XML代码在单独的页面上生成的内容...(我不希望显示页面):
= = = = =
<geonames>
<totalResultsCount>1</totalResultsCount>
<code><postalcode>90210</postalcode>
<name>Beverly Hills</name>
<countryCode>US</countryCode>
<lat>34.09011</lat>
<lng>-118.40648</lng>
<adminCode1>CA</adminCode1>
<adminName1>California</adminName1>
<adminCode2>037</adminCode2>
<adminName2>Los Angeles</adminName2>
<adminCode3/><adminName3/>
</code>
</geonames>
= = = = =
有人向我提供了以下内容,但我不知道如何执行它并解析我需要的变量:
<?php
$pc = $_POST['postalcode'];
$c = $_POST['country'];
$xml = file_get_contents("http://ws.geonames.org/postalCodeSearch?postalcode={$pc}&country={$c}");
file_put_contents("geopost_{$pc}_{$c}.xml",$xml);
?>
感谢您的协助!
答案 0 :(得分:6)
最好的办法是通过直接导航到链接(我使用自己的邮政编码和国家/地区)来查看XML的结构,然后在树中导航,使用SimpleXMLElement获取所需的数据。此示例获取纬度和经度:
<?php
$pc = $_POST['postalcode'];
$c = $_POST['country'];
$xml = new SimpleXMLElement(file_get_contents("http://ws.geonames.org/postalCodeSearch?postalcode=".$pc."&country=".$c));
$lat = $xml->code->lat;
$lng = $xml->code->lng;
echo "Lat: $lat<br/>Lng: $lng";
?>
这可以帮助您开始存储这些值。
答案 1 :(得分:2)
第3步是使用PHP处理xml,这与Simple XML examples
进行了很好的概述答案 2 :(得分:1)
查看PHP SimpleXML,了解如何解析和读取收到的XML数据。