2

根据讨论如何检查字符串是否可以用作PHP中的变量名?用户 TIM 给出了一个很好的答案,但仍然没有解决我的问题。

我就是这样打电话的,但是在生产服务器上,他们有魔术引号 gpc 活动!和..当然..我不能禁用它,我不能要求禁用,最后但并非最不重要的是,我不能在运行时禁用它(按照手册)。所以在这种情况下,即使使用

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

php 正在尝试在这些东西之间执行数学运算,在这种情况下,我真的很想了解如何访问该“节点”。

当然,如果我用魔法引号关闭来测试它,一切都可以按照手册进行。

先感谢您

4

1 回答 1

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 或在属性名称中使用“-”的影响。

于 2012-12-06T15:02:13.057 回答