-2

我在名为 abc.php 的文件中有这个,这将返回一个有效的 xml 文档,而不是在末尾显示 -string- 标签并开始

header('Content-type: application/xml');
$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service
$xmlstr = simplexml_load_string($xml);
echo $xmlstr;

我想使用 abc.php 的有效 xml 数据,提取某些数据,将其存储在我的数据库中,并定期检查另一台服务器的输出,我试过这个:

ob_start();
include 'abc.php';
$result = ob_get_clean()

还有这个:

$xml = file_get_contents("abc.php"); 
$xmlstr = simplexml_load_string($xml);

没有成功,有什么建议吗?

4

3 回答 3

0

file_get_contents("abc.php")将返回文件“abc.php”的内容;它不会执行该 PHP 代码。with output buffering 技巧应该做大致正确的事情,但我不确定你为什么要这样做,所以不值得弄清楚为什么会失败。include

如果您可以访问 中的代码abc.php,则只需将其制成一个 PHP 函数,该函数将返回处理后的 XML:

function get_the_actual_xml()
{
    $xml = file_get_contents("http://www.xxx.asmx/test?id=1"); // External web service
    $xml_obj = simplexml_load_string($xml); // Load into SimpleXML object
    return (string)$xml_obj; // Convert contents back to a string
}

如果由于某种原因您的两个 PHP 文件需要位于不同的服务器上,您将需要引用指向 的URL abc.php而不仅仅是它在磁盘上的位置。这样,PHP 代码将被执行,而您将得到的是该echo语句的结果。如果您的服务器启用allow_url_fopen设置,这很简单$remotely_processed_content = file_get_contents('http://sanjosecostarica.org/test/abc.php')

于 2013-03-01T23:12:10.180 回答
0

最后我无法得到“abc.php”的结果,但只有内容,我成功地尝试了不同的方法:

$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service
$xmlstr = simplexml_load_string($xml);
$xmlok = <<<XML
$xmlstr
XML;

$xml = simplexml_load_string($xmlok);
于 2013-03-02T17:02:04.820 回答
0

确保您也输出 MIME 类型,否则服务器会将 text/html 提供给它,这将是错误的。把这个函数

header("Content-type: application/xml");

在 abc.php 中,因此客户端会将其识别为 XML。

于 2013-03-01T18:21:12.830 回答