使用特殊字符访问实例变量


Access instance variables with special characters

在PHP中使用SimpleXML,我想只抓取<lj:reply-count>节点值。

XML:

<lj:security>public</lj:security>
<lj:posterid>631636</lj:posterid>
<lj:reply-count>42</lj:reply-count>

有点像这样,但显然不是这样因为它会抛出php解析错误

if($item->lj:reply-count)
    $replyCount = $item->lj:reply-count

我尝试了一些其他的变化和谷歌周围,但似乎找不到我要找的东西。谢谢。

由于xml具有名称空间,因此必须使用 ->children() 方法。例子:

$xml_string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:lj="http://www.example.com/">
<lj:security>public</lj:security>
<lj:posterid>631636</lj:posterid>
<lj:reply-count>42</lj:reply-count>
</root>
XML;
$xml = simplexml_load_string($xml_string);
$lj = $xml->children('lj', 'http://www.example.com/');
$reply_count = (string) $lj->{'reply-count'};
echo $reply_count; // 42

应该可以:

if($item->{"lj:reply-count"})
    $replyCount = $item->{"lj:reply-count"}