php脚本返回特定的xml标记值

时间:2010-05-12 00:44:20

标签: php xml

我需要php脚本从以下xml页面中提取IP地址www.ip-address.com/test.xml

<dnstools>
<service_provider>Domain Tools</service_provider>
<provider_url>http://www.domaintools.com/</provider_url>
<date>Wed, 12 May 2010 00:43:07 GMT</date>
<unix_time>1273624987</unix_time>
<ip_address>94.252.157.241</ip_address>
<hostname>94.252.157.241</hostname>
<blacklist_status>Clear</blacklist_status>
<remote_port>43577</remote_port>
<protocol>HTTP/1.0</protocol>
<connection>keep-alive</connection>
<keep_alive/>

2 个答案:

答案 0 :(得分:1)

其他替代方案,,特别是在处理XML文件时,将使用PHP的SimpleXML,这样您就可以轻松地遍历XML树结构。可以如下:

值得一提的是,如果您要加载所需的远程文件,请在您的ini文件中启用“ allow_url_fopen ”。

allow_url_fopen = On

假设这是正在加载的XML

<?xml version="1.0" encoding="UTF-8"?>
<dnstools>
    <service_provider>Domain Tools</service_provider>
    <provider_url>http://www.domaintools.com/</provider_url>
    <date>Wed, 12 May 2010 00:43:07 GMT</date>
    <unix_time>1273624987</unix_time>
    <ip_address>94.252.157.241</ip_address>
    <hostname>94.252.157.241</hostname>
    <blacklist_status>Clear</blacklist_status>
    <remote_port>43577</remote_port>
    <protocol>HTTP/1.0</protocol>
    <connection>keep-alive</connection>
    <keep_alive/>
</dnstools>

在PHP文件中

$xml = simplexml_load_file('http://mydomain.com/test.xml');
echo $xml->children()->ip_address;

你应该得到

94.252.157.241

正如您所看到的,使用SimpleXML http://www.php.net/manual/en/book.simplexml.php它真的很简单:)

答案 1 :(得分:0)

一个简单的正则表达式对于这样的事情来说很容易。

preg_match_all('/(.*)/U', $xml_string, $matches);

在$ matches上执行var_dump以查看它如何处理输出。如果那里只有一个IP地址(或者你只需​​要第一个),你可以使用preg_match()而不是preg_match_all()