我有一个带有标记的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
是递减运算符,或--
。
如何引用此对象的属性?
答案 0 :(得分:5)
使用花括号的方法并没有太大错误,但是在大括号之间需要一个字符串:
var_dump($child->{'item--1'});
答案 1 :(得分:1)
来自SimpleXMLElement
<subscribe>
<callback-url>example url</callback-url>
</subscribe>
对象:
警告任何尝试使用包含连字符的键名解析XML,例如。)
<?php
$xml = simplexml_load_string($input);
$callback = $xml->{"callback-url"};
?>
要访问callback-url,您需要执行以下操作:
{{1}}
如果您尝试在没有大括号和引号的情况下执行此操作,您会发现返回的是0而不是您想要的。