我在远程服务器上有一个页面,它返回一个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服务的整个想法不熟悉 - 我认为这应该是什么.
你必须分两步:
请注意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:有几个选项可能会让您感兴趣 - 例如,指定超时)