2015-09-05 89 views
2
$rss = new DOMDocument(); 
$rss->load('http://www.bing.com/news/search?q=obama&format=rss'); 
$feed = array(); 
foreach ($rss->getElementsByTagName('item') as $node) { 
    $item = array ( 
     'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
     'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
     'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
     'image' => $node->getElementsByTagName('News:Image')->item(0)->nodeValue, 
     ); 
    array_push($feed, $item); 
} 
$limit = 1; 
for($x=0;$x<$limit;$x++) { 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); 
    $link = $feed[$x]['link']; 
    $description = $feed[$x]['desc']; 
    $image = $feed[$x]['image']; 
    $description = str_replace('<div style=', '<![CDATA[<div style=', $description); 
    $image = str_replace('pid=News', 'pid=News.jpg', $image); 
    $date = date('l F d, Y', strtotime($feed[$x]['date'])); 
    echo '<item>'; 
    echo '<title>'.$title.'</title>'; 
    echo '<link>'.$link.'</link>'; 
    echo '<description>'.$description.' <![CDATA[<img align="left" hspace="5" src="'.$image.'"/>]]></description>'; 
    echo '<pubDate>'.$returnValue = date('D, d M Y g:i:s O').'</pubDate>'; 
    echo '</item>'; 
    } 

这是PHP代码。Bing分析元素新闻Feed

我可以捕捉有关饲料的标题和描述。我无法捕捉Bing提要图片。

如何做到这一点?

+0

我可以看到你的'$ rss'的输出吗? – aldrin27

+0

[链接](http://megalinks.xyz/feed.php) –

回答

0
$rss = new DOMDocument(); 
$rss->load('http://www.bing.com/news/search?q=obama&format=rss'); 

$feed = array(); 
foreach ($rss->getElementsByTagName('item') as $itemNode) { 
    $dataArray = array(); 
    foreach ($itemNode->childNodes as $childNode) { 
     $dataArray[$childNode->nodeName] = $childNode->nodeValue; 
    } 
    $feed[] = $dataArray; 
} 

$limit = 1; 
$count = 0; 

foreach ($feed as $feedItem) { 

    if ($count >= $limit) { 
     break; 
    } 

    // Extract actual news URL from bing URL 
    $link = $feedItem['link']; 
    if (strpos($link, 'url=') >= 0) { 
     $linkInfo = parse_url($link); 
     parse_str($linkInfo['query'], $linkParams); 
     $link = $linkParams['url']; 
    } 

    $title = str_replace(' & ', ' &amp; ', $feedItem['title']); 
    $description = str_replace('<div style=', '<![CDATA[<div style=', $feedItem['description']); 
    $link = $feedItem['link']; 
    $pubDateObject = new DateTime($feedItem['pubDate']); 
    $pubDate = $pubDateObject->format('D, d M Y g:i:s O'); 
    $image = str_replace('pid=News', 'pid=News.jpg', $feedItem['News:Image']); 
    $descriptionWithImage = $description . '<![CDATA[<img align="left" hspace="5" src="' . $image . '"/>]]>'; 

    echo sprintf(
     '<item><title>%s</title><link>%s</link><description>%s</description><pubDate>%s</pubDate></item>', 
     $title, $link, $descriptionWithImage, $pubDate 
    ) . PHP_EOL; 

    $count++; 
} 
+0

谢谢,但什么方法适合我的代码?它可以显示? –

+0

它现在应该工作并输出你的XML? –

+0

不工作我的朋友...我会把我的完整代码如下... –

0

你可以试试我的解决方案,你的代码使用XPath:

<?php 
$rss = new DOMDocument(); 
$rss->load('http://www.bing.com/news/search?q=obama&format=rss'); 
$feed = array(); 
$xpath = new DOMXPath($rss); 
$images = $xpath -> query("//News:Image"); 
$i = 0; 
foreach ($rss->getElementsByTagName('item') as $node) { 
    $item = array ( 
    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 
    'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 
    'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, 
    'image' => $images[$i++]->nodeValue, 
    ); 

array_push($feed, $item); 
} 

它工作正常。