【发布时间】:2012-08-31 19:38:29
【问题描述】:
我有一个 xml 文档,其中包含两个破折号的标签,如下所示:<item--1>。我正在使用 SimpleXML 来解析这个文档,所以它给了我带有标签名称的对象属性。这显然是一个问题,我猜是因为破折号是变量和属性名称的无效字符。
<?php
$xml = "<data><fruits><item>apple</item><item--1>bananna</item--1></fruits></data>";
$xml = simplexml_load_string($xml);
foreach( $xml->children() as $child ) {
var_dump($child->item);
# var_dump($child->item--1);
}
当你运行它时,你会得到
object(SimpleXMLElement)#5 (1) {
[0]=>
string(5) "apple"
}
但是如果你取消注释最后一行,带有两个破折号的 xml 元素,你会得到一个错误:
PHP Parse error: syntax error, unexpected T_LNUMBER in test.php on line 17
我尝试使用花括号:
var_dump($child->{item--1});
但这只会给我这个错误:
PHP Parse error: syntax error, unexpected T_DEC
这是减量运算符,或--。
如何引用该对象的属性?
【问题讨论】:
-
var_dump($child)产生了什么? -
object(SimpleXMLElement)#4 (2) { ["item"]=> string(5) "apple" ["item--1"]=> string(7) "bananna" }虽然没有中断,但实际上并不允许我访问数据。它们不是我可以引用的数组元素。
标签: php syntax properties simplexml