2012-12-06 88 views
2

根据讨论How to check if a string can be used as a variable name in PHP?用户TIM给出了一个很好的答案,但仍然没有解决我的问题。PHP - 一个对象的节点 - 内部带“ - ”的变量名称

我正在那样做,但在生产服务器上他们有神奇的报价gpc活跃!当然.. ..我不能禁用它,我不能要求禁用和最后但并非最不重要,我不能禁用它在运行时(按手册)。 所以在这种情况下,即使使用

echo $xml->example->{'phone-number-1'}; 

PHP是努力的东西之间执行数学运算和我真的成为拼了命地了解如何访问到在这种情况下是“节点”。

当然,如果我测试这与魔术报价关闭,一切都可以根据手册。

预先感谢您

+1

这不是试图在这里执行任何数学,我可以保证。你确定这个问题与魔术引语有关吗?你的输入来自哪里,受到魔术引号的影响? – deceze

+0

为了能够说出为什么magic_quotes会影响您添加的代码,我们需要一个更完整的示例。显示的代码不会以其当前形式执行数学运算。 – MatsLindh

+0

我在这个过程的最后,我只做了数百万次的测试,所以..是的,我确信一切。 所以,问题是: 我HOW应调用节点,结构LIKE: 根 - >板块 - >现场>节点-数1 并与魔术引号GPC =“ON”(服务器端) 的请致电 $ xml - > .....-> {'node-number-1'};在这种情况下 不起作用。的XML的 部分是这样的: ... ......... ​​7550799872321 1 <节点号码-1> 456789 ......... ... 如果我的var_dump对象,它没有显示与所有的节点的“ - ” – andymnc

回答

0

为了详细说明提出的意见,可用您要共享的信息,你的代码像宣传的那样,不管magic_quotes_gpc的是否设置与否。它不会尝试对字符串执行任何算术运算,并且magic_quotes_gpc不会影响simplexml解析数据的方式。

~/temp ► cat foo.xml 
<example> 
    <node-ex> 
     <identifier-1>ValueOfIdentifier1</identifier-1> 
     <phone-number-1>141 555 1414</phone-number-1> 
    </node-ex> 
</example> 

~/temp ► cat test.php 
<?php 
$root = simplexml_load_file("foo.xml"); 

echo $root->{'node-ex'}->{'identifier-1'} . "\n"; 
echo $root->{'node-ex'}->{'phone-number-1'} . "\n"; 

~/temp ► php test.php    
ValueOfIdentifier1 
141 555 1414 
~/temp ► php -dmagic_quotes_gpc=1 test.php 
ValueOfIdentifier1 
141 555 1414 

当然,如果您的示例与您实际使用的数据不同,那可能是问题所在。如果启用magic_quotes_gpc,则使用stripslashes()应该使其反转,然后它应该可以工作。如果你没有使用一个常量字符串,而是一个变量 - 这可能是问题的原因。然而,在您的示例中没有任何内容表示任何应该受magic_quotes_gpc影响或在属性名称中使用“ - ”的任何内容。

+0

我可以问你写一个关于echo $ root - > {'node-ex'} - > {'phone-number-1'}的stripslashes 的例子。 – andymnc

+0

好吧,因为这里没有任何值可以应用magic_quotes_gpc,所以没有任何东西可以调用stripslashes。这就是我试图创建的一点,以及为什么我们需要在示例中使用代码的上下文,因为您粘贴的代码中没有任何东西需要用stripslashes。 – MatsLindh

+0

只是对@fiskfisk说他对此是正确的,并请原谅我的错误问题。 问题是我正在检查相同的软件(我在想...)在相同类型的机器上,相同的灯版本,并且只有magic_quotes_gpc作为两台服务器之间的区别。 只是发现一台机器正在调用geolocator服务器地址,而另一台机器正在调用另一台geolocator。 所以我收到了其中一个节点上完全空的节点。 再次感谢fiskfisk,对于错误的问题我很抱歉。 – andymnc