我的目标是使用提供的XML将Tumblr帖子嵌入到网站中。问题在于Tumblr会为您发布的每张图片保存6种不同尺寸。我下面的代码将获得第一张图片,但它确实太大了。如果所有照片都具有相同的<photo-url>
标签,如何从XML中选择一张较小尺寸的照片?
→这是我正在使用的Tumblr的XML:Tumblr XML。
→到目前为止这是我的PHP代码:
<?php
$request_url = "http://kthornbloom.tumblr.com/api/read?type=photo";
$xml = simplexml_load_file($request_url);
$title = $xml->posts->post->{'photo-caption'};
$photo = $xml->posts->post->{'photo-url'};
echo '<h1>'.$title.'</h1>';
echo '<img src="'.$photo.'"/>"';
echo "…";
echo "</br><a target=frame2 href='".$link."'>Read More</a>";
?>
答案 0 :(得分:1)
使用max-width="100"
获取照片:
$xml = simplexml_load_file('tumblr.xml');
echo '<h1>'.$xml->posts->post->{'photo-caption'}.'</h1>';
foreach($xml->posts->post->{'photo-url'} as $url) {
if ($url->attributes() == '100')
echo '<img src="'.$url.'" />';
}
答案 1 :(得分:1)
函数getPhoto
采用$photos
和$desiredWidth
的数组。它返回max-width
最接近(1)并且(2)小于或等于$desiredWidth
的照片。您可以调整功能以满足您的需求。需要注意的重要事项是:
$xml->posts->post->{'photo-url'}
是一个数组。$photo['max-width']
访问max-width
标记上的<photo>
属性。我使用echo '<pre>'; print_r($xml->posts->post); echo '</pre>';
找出$xml->posts->post->{'photo-url'}
是一个数组。
我在SimpleXMLElement
的文档中找到了访问属性的语法(例如$photo['max-width']
)。
function getPhoto($photos, $desiredWidth) {
$currentPhoto = NULL;
$currentDelta = PHP_INT_MAX;
foreach ($photos as $photo) {
$delta = abs($desiredWidth - $photo['max-width']);
if ($photo['max-width'] <= $desiredWidth && $delta < $currentDelta) {
$currentPhoto = $photo;
$currentDelta = $delta;
}
}
return $currentPhoto;
}
$request_url = "http://kthornbloom.tumblr.com/api/read?type=photo";
$xml = simplexml_load_file($request_url);
foreach ($xml->posts->post as $post) {
echo '<h1>'.$post->{'photo-caption'}.'</h1>';
echo '<img src="'.getPhoto($post->{'photo-url'}, 450).'"/>"';
echo "...";
echo "</br><a target=frame2 href='".$post['url']."'>Read More</a>";
}
答案 2 :(得分:0)
也许这个:
$doc = simplexml_load_file(
'http://kthornbloom.tumblr.com/api/read?type=photo'
);
foreach ($doc->posts->post as $post) {
foreach ($post->{'photo-url'} as $photo_url) {
echo $photo_url;
echo "\n";
}
}