提问人:andymnc 提问时间:12/6/2012 最后编辑:Communityandymnc 更新时间:3/9/2017 访问量:170
PHP - 对象的节点 - 包含“-”的变量名称
PHP - Node of a object - Variable name with "-" inside
问:
根据讨论 如何检查字符串是否可以用作PHP中的变量名? 用户 TIM 给出了一个很好的答案,但仍然没有解决我的问题。
我完全是这样做的,但是在生产服务器上,他们有魔术报价 gpc active!和。。答案是肯定的。。我不能禁用它,我不能要求禁用,最后但并非最不重要的一点是,我不能在运行时禁用它(根据手册)。 所以在这种情况下,即使使用
echo $xml->example->{'phone-number-1'};
PHP 正试图在这些东西之间执行数学运算,在这种情况下,我真的很生气地了解如何访问该“节点”。
当然,如果我用魔术引号 OFF 测试这一点,一切都按照手册进行。
先谢谢你
答:
0赞
MatsLindh
12/6/2012
#1
为了详细说明所做的注释,使用您要共享的可用信息,您的代码将按广告工作,无论是否设置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赞
andymnc
12/6/2012
我可以请你在这里写一个关于 echo $root->{'node-ex'}->{'phone-number-1'} 的条形斜杠示例吗?
0赞
MatsLindh
12/7/2012
好吧,由于这里没有值可以应用任何magic_quotes_gpc,所以真的没有什么可以调用条形斜杠的。这就是我想要表达的观点,也是为什么我们需要在示例中包含代码的上下文,因为您粘贴的代码中没有任何需要条形斜杠的继承内容。
0赞
andymnc
12/7/2012
只是想对@fiskfisk说他对了,并原谅我问错了问题。问题是我在相同类型的机器上检查相同的软件(我在想......),相同的灯版本,并且只有 magic_quotes_gpc 2 台服务器之间的差异。只是为了发现一台机器正在调用地理定位器服务器地址,而另一台机器正在调用另一个地理定位器。所以我在其中一个节点上收到这些节点完全是空的。再次感谢fiskfisk,我很抱歉提出错误的问题。
下一个:定义具有动态名称的值
评论
var_dump