Php 不同服务器上相同数据的SimpleXML差异

Php 不同服务器上相同数据的SimpleXML差异,php,xml,linux,macos,simplexml,Php,Xml,Linux,Macos,Simplexml,我正在尝试使用xpath从加载的simplexmlement获取数据。 然而,相同的代码在本地服务器和开发服务器上产生不同的结果。有人能告诉我该找什么吗 以下是在两台服务器上运行的代码: <?php $xml = simplexml_load_string('<?xml version="1.0"?> <document> <ADDDATA> <PAGEN>1</PAGEN> <DO

我正在尝试使用
xpath
从加载的
simplexmlement
获取数据。 然而,相同的代码在本地服务器和开发服务器上产生不同的结果。有人能告诉我该找什么吗

以下是在两台服务器上运行的代码:

<?php

$xml = simplexml_load_string('<?xml version="1.0"?>
<document>
    <ADDDATA>
        <PAGEN>1</PAGEN>
        <DOCN>123456789</DOCN>
        <DATE>06.07.2017</DATE>
    </ADDDATA>
</document>
');

$nodes = $xml->xpath('//DOCN');

var_dump($nodes);
开发(wtf)的结果:

我的本地环境是:

  • OSX10.12.6

  • homebrew/php/php56:stable 5.6.31(瓶装),HEAD

  • libxml2:stable 2.9.5(瓶装),桶装[仅桶]

我的服务器是:

  • ubuntu14.04.3lts(GNU/Linux 3.13.0-57-generic x86_64)

  • PHP5.5.9-1ubuntu4.16(cli)(构建时间:2016年4月20日14:31:27)

  • /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1

版本的不同会产生不同的结果吗

是否有我可能缺少的全局配置


谢谢

不要依赖
var\u dump()
输出来检查
simplexmlement
s。我认为你遇到的这个具体问题与此有关。可以看到,PHP5.6.10中的结果发生了变化,这与您的体验是一致的。Bug#66084是

您可能已经知道这一点,但以防万一:
$nodes
包含
simplexmlement
的列表,而不是它们的值。因此,要获取节点的值,只需将每个实例隐式或显式转换为字符串:

echo $nodes[0]; // 123456789 , implicitly
var_dump($nodes[0]->__toString()); // string(9) "123456789", explicitly
var_dump((string)$nodes[0]); // string(9) "123456789", explicitly

使用
echo$nodes[0]->asXML()可能会提供一些更有用的输出。通常,
asXML()
提供了更好的数据视图,而不是
var\u dump
array(1) { [0]=> object(SimpleXMLElement)#2 (0) { } }
echo $nodes[0]; // 123456789 , implicitly
var_dump($nodes[0]->__toString()); // string(9) "123456789", explicitly
var_dump((string)$nodes[0]); // string(9) "123456789", explicitly