php получает заголовки BING RSS RSS в одну переменную - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь с помощью приведенного ниже кода получить новостную ленту bing rss, захватить все заголовки из этих данных в массив и затем объединить их все вместе, чтобы у меня была переменная со всеми словами вместе в строке, чтобы я мог затем создайте из этого облако слов с другим кусочком кода. Пока что он получает rss feed и print_r ($ doc); если вы раскомментируете, он отобразит простой xml. Но, похоже, мой цикл foreach для захвата заголовков в массиве не работает, и я не вижу, где ошибка? Заранее спасибо.

$ch = curl_init("http://api.bing.com/rss.aspx?Source=News&Market=en-GB&Version=2.0&Query=web+design+uk");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);

$doc = new SimpleXMLElement($data);
//print_r($doc);

$vals = array();
foreach ($doc->entry as $entry) {
$vals[] = (string) $entry->title;
}

//join content nodes together for the word cloud
$vals = implode(' ', $vals);

echo($vals);

1 Ответ

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

Названия находятся на rss / channel / item / title , а не там, где их ищет ваш код, на rss / entry / title Кроме этого, ваш способ получения значений в порядке.

$rss = simplexml_load_file('http://api.bing.com/rss.aspx?Source=News&Market=en-GB&Version=2.0&Query=web+design+uk');

$titles = array();
foreach ($rss->channel->item as $item) {
    $titles[] = (string) $item->title;
}

//join content nodes together for the word cloud
$words = implode(' ', $titles);

echo $words;

Быстрая альтернатива, использующая XPath для получения названий:

$rss  = simplexml_load_file('http://api.bing.com/rss.aspx?Source=News&Market=en-GB&Version=2.0&Query=web+design+uk');
$words = implode(' ', $rss->xpath('channel/item/title'));
echo $words;
...