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 に答える