我在远程服务器上有一个页面返回单个 xml 值
<?xml version="1.0" ?><Tracker>12345</Tracker>
如何将值 12345 或标记中的任何内容获取到 PHP 变量中? 我知道我不能做这样简单的事情:
<?php
$var = http://www.www.com/file.php;
echo $var; //12345
?>
我对创建 Web 服务的整个想法很陌生 - 我认为这应该是这样的。?
最佳答案
您必须分两步进行:
- 从远程服务器获取 XML 字符串
- 与 curl ,例如
- 或使用 file_get_contents
- 然后解析该 XML 以提取数据
请注意,这两个步骤可以合并为一个,使用 simplexml_load_file
,如果您的服务器配置允许您这样做。
一旦您将 XML 放入 PHP 变量中,使用 SimpleXML 就可以很容易地获得您想要的值。例如:
$string = '<?xml version="1.0" ?><Tracker>12345</Tracker>';
$xml = simplexml_load_string($string);
echo (string)$xml;
会得到你
12345
从远程 URL 获取 XML 的内容非常简单:
$string = file_get_contents('http://your-remote-url');
如果您能做到这一点,您还可以直接通过 SimpleXML 使用该远程 URL:
$xml = simplexml_load_file('http://your-remote-url');
echo (string)$xml;
但这只有在 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);
然后,您仍然可以使用 simplexml_load_string
,就像我在第一个示例中所做的那样。
(如果使用curl,请查看curl_setopt
的文档:有几个您可能感兴趣的选项——例如,指定超时)
关于php - 从远程页面获取值并将其存储为本地变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1958778/