使用atom_1和php显示来自公共flickr api的5个最新缩略图
我正在尝试从以下位置显示最新的5幅图像:使用atom_1和php显示来自公共flickr api的5个最新缩略图,php,xml,api,flickr,Php,Xml,Api,Flickr,我正在尝试从以下位置显示最新的5幅图像: http://api.flickr.com/services/feeds/photos_public.gne 使用标签“cars”,然后将最新的5个缩略图作为图库类型输出到一个空白html文档中 就我所知: <?php require_once 'HTTP/Request2.php'; $request = new HTTP_Request2(); $request->setUrl('http://api.flickr.com/servi
http://api.flickr.com/services/feeds/photos_public.gne
使用标签“cars”,然后将最新的5个缩略图作为图库类型输出到一个空白html文档中
就我所知:
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('http://api.flickr.com/services/feeds/photos_public.gne');
$request->setMethod(HTTP_Request2::METHOD_GET);
$url = $request->getUrl();
$url->setQueryVariable('tags', 'cars');
$url->setQueryVariable('tagmode', 'any');
$url->setQueryVariable('format', 'atom_1');
try {
$response = $request->send();
if (200 == $response->getStatus()) {
$body = $response->getBody();
} else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
} catch (HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
$DOM = new SimpleXMLElement($body);
?>
我不知道这是否正确,也不知道如何用html显示它。在查看您的问题提要后,它显示每个项目都没有图像元素。因此,访问它将为您提供
NULL
,它将作为空字符串(不可见)进行回显:
输出(纯文本):
它已经允许传递xpath查询来指定要检索的具体元素,通常是HTML内部的body
标记,这就是为什么它被设置为默认值。即使您的HTML中没有该标记,它实际上也存在于DOM中,因此此默认值从未出错。但无论如何,在你的情况下,你对img标签感兴趣。多亏了simpelxml,我们甚至可以将其直接输出为XML,甚至可以手工创建HTML
用法示例:
$DOM = new HtmledSimpleXML($body);
foreach ($DOM->entry as $entry) {
echo '<a href="">', $entry->title, '</a>', "\n",
$entry->content->html('//img')->asXML(), "\n";
;
}
输出(纯文本):
我希望到目前为止这是有帮助的
上一次在。如果我只能很快地问你,那我很抱歉:你为什么不知道这是否正确?你有什么错误吗?或者你是否有不同的期待?关于您的显示问题:您知道HTML有一个图像元素吗?我在正文中有这样一个元素:foreach($DOM->entry as$item){$image=(string)$item->image;$title=(string)$item->title;echo”“;echo”“;}但它只显示图像的标题,而不显示图像的缩略图本身还有一点工作要做,可能理解起来并不那么直截了当,我给你留下了一个答案。
<a href="">Picadas, Marco Juarez 01-05-13</a>
<img src="" alt="Picadas, Marco Juarez 01-05-13" width="304" height="228">
<entry>
<title>Picadas, Marco Juarez 01-05-13</title>
<link rel="alternate" type="text/html" href="http://www.flickr.com/photos/osvaldorainero/8709806523/"/>
<id>tag:flickr.com,2005:/photo/8709806523</id>
<published>2013-05-05T15:25:15Z</published>
<updated>2013-05-05T15:25:15Z</updated>
<flickr:date_taken>2013-05-01T15:42:01-08:00</flickr:date_taken>
<dc:date.Taken>2013-05-01T15:42:01-08:00</dc:date.Taken>
<content type="html"> <p><a href="http://www.flickr.com/people/osvaldorainero/">Osvaldo Rainero</a> posted a photo:</p>
<p><a href="http://www.flickr.com/photos/osvaldorainero/8709806523/" title="Picadas, Marco Juarez 01-05-13"><img src="http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_m.jpg" width="240" height="161" alt="Picadas, Marco Juarez 01-05-13" /></a></p>
</content>
<author>
<name>Osvaldo Rainero</name>
<uri>http://www.flickr.com/people/osvaldorainero/</uri>
<flickr:nsid>91267729@N05</flickr:nsid>
<flickr:buddyicon>http://farm9.staticflickr.com/8107/buddyicons/91267729@N05.jpg?1363607055#91267729@N05</flickr:buddyicon>
</author>
<link rel="enclosure" type="image/jpeg" href="http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_b.jpg"/>
<category term="cars" scheme="http://www.flickr.com/photos/tags/"/>
...
<category term="arrancadas" scheme="http://www.flickr.com/photos/tags/"/>
</entry>
<content type="html"> <p><a href="http://www.flickr.com/people/osvaldorainero/">Osvaldo Rainero</a> posted a photo:</p>
<p><a href="http://www.flickr.com/photos/osvaldorainero/8709806523/" title="Picadas, Marco Juarez 01-05-13"><img src="http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_m.jpg" width="240" height="161" alt="Picadas, Marco Juarez 01-05-13" /></a></p>
</content>
echo $entry->content, "\n";
<p><a href="http://www.flickr.com/people/osvaldorainero/">Osvaldo Rainero</a> posted a photo:</p>
<p><a href="http://www.flickr.com/photos/osvaldorainero/8709806523/" title="Picadas, Marco Juarez 01-05-13"><img src="http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_m.jpg" width="240" height="161" alt="Picadas, Marco Juarez 01-05-13" /></a></p>
class HtmledSimpleXML extends SimpleXMLElement
{
/**
* Parses element content as HTML and returns the
* body element of it.
*
* @param string $xpath (optional) specify a different element to return
*
* @return SimpleXMLElement
*/
public function html($xpath = '//body') {
$doc = new DOMDocument();
$doc->loadHTML($this);
$xml = simplexml_import_dom($doc->documentElement);
list($body) = $xml->xpath($xpath);
return $body;
}
}
$DOM = new HtmledSimpleXML($body);
foreach ($DOM->entry as $entry) {
echo '<a href="">', $entry->title, '</a>', "\n",
$entry->content->html('//img')->asXML(), "\n";
;
}
<a href="">Picadas, Marco Juarez 01-05-13</a>
<img src="http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_m.jpg" width="240" height="161" alt="Picadas, Marco Juarez 01-05-13"/>
$thumb = $entry->content->html('//img');
echo 'Title: ', $entry->title, "\n",
'Thumb: ', $thumb['src'], "\n",
'Size : ', $thumb['width'], ' x ', $thumb['height'], "\n";
Title: Picadas, Marco Juarez 01-05-13
Thumb: http://farm9.staticflickr.com/8114/8709806523_3b8d7c0418_m.jpg
Size : 240 x 161