2012-06-24 34 views
0

可能重複:
SimpleXML Reading node with a hyphenated name改變在PHP的XML值,但假以節點名ID-7

我想換一個xml,但沒有與此代碼。

我認爲錯誤與變量名稱(ID-1)在PHP中。

chang.php

<?php 

include 'example.php'; 
$xml = new SimpleXMLElement($xmlstr); 
$xml->ID-1 = '8'; 
$xml->name = 'Big Cliff'; 
$xml->asXML('test2.xml'); 
echo $xml->asXML(); 
?> 

使用example.php

<?php 
$xmlstr = <<<XML 
<?xml version="1.0" encoding="utf-8"?> 
<film> 
    <ID-1>29</ID-1> 
    <name>adf</name> 
    </film> 
XML; 
?> 

回答

1

爲什麼這不起作用?

查看php變量。你不能在變量中使用' - '。不能用連字符/短劃線創建變量這一點在PHP中一直是這種方式(可能是任何C語言),因爲該字符用於減法運算符的

http://www.php.net/manual/en/language.variables.basics.php

變量名遵循相同的規則,如PHP等標籤。 有效的變量名稱以字母或下劃線開頭,後跟任意數量的字母,數字或下劃線。

如果你UnderstanD正則表達式:作爲一個正則表達式,它將被這樣表示:'[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'

如果我不能用' - '來控制元素名稱,該怎麼辦?

然而,從docs,訪問包含下PHP的命名約定不允許(例如連字符)字符的XML文檔中的元素可以由括號內封裝元件名稱來實現和apostrophe.You可以包裝VAR在{}爲簡單的XML elemnts,使這項工作看到一些很好的解釋here 所以,你仍然可以使這種通過改變工作:

<?php 
include 'example.php'; 
$xml = new SimpleXMLElement($xmlstr); 
$xml->{'ID-1'} = '8';//change here 
$xml->name = 'Big Cliff'; 
$xml->asXML('test2.xml'); 
echo $xml->asXML(); 
?> 
0

更改這些行:

$xml->{"ID-1"}[0] = '8'; 
$xml->name[0] = 'Big Cliff';