我需要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/>
答案 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()