2012-02-10 47 views
0

您好,我从输出$ doc获得以下php代码,我希望将所有[content]项目放在一起用于标记云中。如何将所有[内容]项目提取到一个变量中?将SimpleXMLElement对象[content]元素结合到一个变量中

$ch = curl_init("http://api.sysomos.com/hb/v1/heartbeat/rss?startid=0&hbrss=DUpnCTqppKjx4q1U6FXd5SWOPFUa2ltLm1haXJAYi1hbmQtcS5jby51aw..&maxC=6&max=30&hid=2535& fTs=me&dRg=7&tab=beats&scO=Recency&"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
$data = curl_exec($ch); 
curl_close($ch); 
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 
print_r($doc); 

回答

0

没有进一步澄清,看来你遇到麻烦个人<content>节点的字符串值?如果是这样,考虑以下因素:

$str = ' 
<xml> 
    <content>content1</content> 
    <somethingElse>DOH!</somethingElse> 
    <content>content2</content> 
    <content>content3</content> 
</xml> 
'; 

$doc = new SimpleXMLElement($str); 
$vals = array(); 
foreach ($doc->content as $content) { 
    $vals[] = (string) $content; 
} 

print_r($vals); 

这将输出:

Array 
(
    [0] => content1 
    [1] => content2 
    [2] => content3 
) 

UPDATE

根据你的评论,你可以使用一个额外的implode调用,比如用上述同样的战术所以:

$vals = implode('', $vals); 
echo $vals; // outputs: content1content2content3 

或,修改原来的循环:

$vals = ''; 
foreach ($doc->content as $content) { 
    $vals .= (string) $content; 
} 
echo $vals; // outputs: content1content2content3 
+0

我想将所有的内容节点合并成一个字符串。对不起,如果这不清楚的问题。 – 2012-02-10 20:19:58

+0

@ BenPaton更新回答 – rdlowrey 2012-02-10 20:23:00

+0

感谢您的帮助print_r只是打印出“Array()”在页面上,任何想法,为什么这是?这是来自第一块代码,而不会将内容节点聚合在一起。 – 2012-02-10 20:35:53