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提要图像 如何做到这一点?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
$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(' & ', ' & ', $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(' & ', ' & ', $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);
}