объединить элементы SimpleXMLElement Object [content] в переменную - PullRequest
0 голосов
/ 10 февраля 2012

Здравствуйте, у меня есть следующий php-код, из выходного $ doc я хочу взять все элементы [content] и собрать их вместе для использования в облаке тегов. Как я могу извлечь все элементы [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);

1 Ответ

0 голосов
/ 11 февраля 2012

Без дополнительных разъяснений, кажется, у вас возникли проблемы с получением строкового значения отдельных <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
)

ОБНОВЛЕНИЕ

Согласно вашему комментарию, вы можете использоватьта же самая тактика выше с дополнительным вызовом implode, например, так:

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

Или измените исходный цикл так:

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