PHP-скрипт возвращает определенное значение тега XML - PullRequest
0 голосов
/ 12 мая 2010

Мне нужен php-скрипт для извлечения IP-адреса со следующей xml-страницы. 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 ]

1 голос
/ 12 мая 2010

Другой альтернативой, , особенно при обработке 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 все становится действительно просто:)

0 голосов
/ 12 мая 2010

Простое регулярное выражение достаточно просто для чего-то подобного.

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

Сделайте var_dump для $ match, чтобы увидеть, как он обрабатывает вывод. Если там только один IP-адрес (или вам нужен только первый), вы можете использовать preg_match () вместо preg_match_all ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...