从远程页面获取值并存储为本地变量

Jas*_*son 2 php

我在远程服务器上有一个页面,它返回一个xml值

<?xml version="1.0" ?><Tracker>12345</Tracker>
Run Code Online (Sandbox Code Playgroud)

如何将值12345或标记中的任何内容转换为PHP变量?我知道我不能做一些简单的事情:

<?php
    $var = http://www.www.com/file.php;
    echo $var;   //12345
?>
Run Code Online (Sandbox Code Playgroud)

我对创建Web服务的整个想法不熟悉 - 我认为这应该是什么.

Pas*_*TIN 5

你必须分两步:

请注意simplexml_load_file,如果服务器的配置允许您执行此操作,则可以将这两个步骤合并为一个步骤.


一旦在PHP变量中使用SimpleXML获得XML,就可以很容易地获得所需的值.例如 :

$string = '<?xml version="1.0" ?><Tracker>12345</Tracker>';
$xml = simplexml_load_string($string);
echo (string)$xml;
Run Code Online (Sandbox Code Playgroud)

会得到你

12345
Run Code Online (Sandbox Code Playgroud)


从远程URL获取该XML的内容可以简单到:

$string = file_get_contents('http://your-remote-url');
Run Code Online (Sandbox Code Playgroud)

如果你能做到这一点,你也可以直接使用SimpleXML远程URL:

$xml = simplexml_load_file('http://your-remote-url');
echo (string)$xml;
Run Code Online (Sandbox Code Playgroud)

但这只有allow_url_fopen在服务器配置中启用时才有效.


如果allow_url_fopen在服务器上禁用,则可以使用curl从远程服务器获取XML; 像这样的东西应该做的伎俩,例如:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://your-remote-url");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$string = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

然后,你仍然可以使用simplexml_load_string,就像我在第一个例子中所做的那样.

(如果使用curl,请查看以下文档curl_setopt:有几个选项可能会让您感兴趣 - 例如,指定超时)