2012-12-06 134 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