Php 通过Bing新闻提要解析元素 $rss=newdomdocument(); $rss->load($rss)http://www.bing.com/news/search?q=obama&format=rss'); $feed=array(); foreach($rss->getElementsByTagName('item')作为$node){ $item=数组( 'title'=>$node->getElementsByTagName('title')->项(0)->nodeValue, 'desc'=>$node->getElementsByTagName('description')->项(0)->节点值, 'link'=>$node->getElementsByTagName('link')->项(0)->nodeValue, 'date'=>$node->getElementsByTagName('pubDate')->项(0)->节点值, 'image'=>$node->getElementsByTagName('News:image')->item(0)->nodeValue, ); 阵列推送($feed,$item); } $limit=1; 对于($x=0;$x)

Php 通过Bing新闻提要解析元素 $rss=newdomdocument(); $rss->load($rss)http://www.bing.com/news/search?q=obama&format=rss'); $feed=array(); foreach($rss->getElementsByTagName('item')作为$node){ $item=数组( 'title'=>$node->getElementsByTagName('title')->项(0)->nodeValue, 'desc'=>$node->getElementsByTagName('description')->项(0)->节点值, 'link'=>$node->getElementsByTagName('link')->项(0)->nodeValue, 'date'=>$node->getElementsByTagName('pubDate')->项(0)->节点值, 'image'=>$node->getElementsByTagName('News:image')->item(0)->nodeValue, ); 阵列推送($feed,$item); } $limit=1; 对于($x=0;$x),php,rss,bing,Php,Rss,Bing,这是PHP代码 我可以捕获相关提要的标题和描述。我无法捕获Bing提要图像 如何做到这一点?$rss=newDOMDocument(); $rss = new DOMDocument(); $rss->load('http://www.bing.com/news/search?q=obama&format=rss'); $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) { $i

这是PHP代码

我可以捕获相关提要的标题和描述。我无法捕获Bing提要图像

如何做到这一点?

$rss=newDOMDocument();
$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>';
    }
$rss->load($rss)http://www.bing.com/news/search?q=obama&format=rss'); $feed=array(); foreach($rss->getElementsByTagName('item')作为$itemNode){ $dataArray=array(); foreach($itemNode->childNodes作为$childNode){ $dataArray[$childNode->nodeName]=$childNode->nodeValue; } $feed[]=$dataArray; } $limit=1; $count=0; foreach($feed作为$feedItem){ 如果($count>=$limit){ 打破 } //从bing URL中提取实际新闻URL $link=$feedItem['link']; 如果(strpos($link,'url=')>=0){ $linkInfo=parse_url($link); parse_str($linkInfo['query'],$linkParams); $link=$linkParams['url']; } $title=str_replace('&','&;',$feedItem['title']); $description=str_replace(“”; 埃科斯普林特( “%s%s%s%s”, $title、$link、$descriptionWithImage、$pubDate ).PHP_EOL; $count++; }
您可以使用Xpath尝试我的代码解决方案:

$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++;
}

我能看看你的
$rss
的输出吗?谢谢,但是在我的代码中有什么适合它的方法吗?它可以显示出来吗?我使用的是简写数组语法“$var=[]”,在旧的PHP版本上不起作用。我已经用旧的方法更新了它,在我的MAC上运行它很好吗?
<?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);
}