3

我对 php 很平庸,对 XML 很无知……如果你能详细说明,它将帮助我学习。

我正在尝试使用 PHP 编程来执行此链接的脚本... http://ws.geonames.org/postalCodeSearch?postalcode=VARIABLE_ZIP&country=US。VARIABLE_ZIP 是输入到表单中的实际邮政编码,将在上面的链接中提交信息。该链接的输出会创建一个 XML 页面,我不想在我的网站上的任何位置显示该页面。

我想要做的是捕获 XML 数据纬度和经度值作为 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);
?>

谢谢您的帮助!

4

3 回答 3

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";
?>

这应该有助于您开始存储这些值。

于 2012-05-14T15:20:29.263 回答
2

第 3 步是使用 PHP 处理 xml,这些简单 XML 示例很好地概述了

于 2012-05-14T15:13:33.997 回答
1

看看 PHPs SimpleXML如何解析和读取接收到的 XML 数据。

于 2012-05-14T15:13:18.020 回答