简体   繁体   English

将SimpleXMLElement对象[内容]元素合并到一个变量中

[英]combine SimpleXMLElement Object [content] elements into a variable

Hello I have the following php code, from the output $doc I want to take all the [content] items and put them together for use in a tag cloud. 您好,我有以下php代码,从$ doc输出中,我想获取所有[content]项目并将它们放在一起以在标签云中使用。 How can I extract all the [content] items into one variable? 如何将所有[内容]项目提取到一个变量中?

$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);

Without further clarification, it seems you're having trouble getting the string value of the individual <content> nodes? 如果没有进一步的说明,看来您很难获取各个<content>节点的字符串值? If so, consider the following: 如果是这样,请考虑以下事项:

$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);

This will output: 这将输出:

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

UPDATE 更新

As per your comment, you could use the same tactic above with an additional implode call like so: 根据您的评论,您可以使用上面的相同策略以及一个额外的implode调用,如下所示:

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

Or, modify the original loop to do: 或者,修改原始循环以执行以下操作:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM