2011-04-20 56 views
0

編輯:找出解決方案。正如所建議的那樣,我將腳本轉換爲使用JSON而不是XML。腳本如下,如果需要,應該在Wordpress安裝內工作使用PHP獲取Tumblr照片

<?php 
$offset = $_GET['offset']; 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,"http://blog.dgovil.com/api/read/json?num=10&start=".$offset); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
$result = curl_exec($ch); 
curl_close($ch); 

$result = str_replace("var tumblr_api_read = ","",$result); 
$result = str_replace(';','',$result); 
$result = str_replace('\u00a0','&amp;nbsp;',$result); 

$jsondata = json_decode($result,true); 
$posts = $jsondata['posts']; 


foreach($posts as $post){ ?> 
<div class="tumblr_post post-<?php echo $post['type'] ?>"> 

    <?php if ($post['type'] == 'regular') { ?> 
     <div class="post-title" id="post-<?php echo $post['id'];?>"><a href="<?php echo $post['url-with-slug']; ?>"><?php echo $post{'regular-title'}; ?></a></div> 
    <?php echo $post{'regular-body'}; ?> 
     <?php } ?> 

    <?php if ($post['type'] == 'quote') { ?> 
     <?php echo $post{'quote-text'}; ?> 
     <?php echo $post{'quote-source'}; ?> 
     <?php } ?> 


    <?php if ($post['type'] == 'photo') { ?> 
     <img src="<?php echo $post['photo-url-500'];?>"> 
     <?php echo $post{'photo-caption'}; ?> 
     <?php echo $post{'photo-set'}; ?> 

     <a href="<?php echo $post{'photo-url'}; ?>" class="fImage">View Full Size</a> 
    <?php } ?> 

    <?php if ($post['type'] == 'link') { ?> 

     <p><a href="<?php echo $post{'link-url'}; ?>"><?php echo $post{'link-text'}; ?></a> 
     <?php echo $post{'link-description'}; ?> 
     <?php } ?> 

    <?php if ($post['type'] == 'conversation') { ?> 
     <?php echo $post{'conversation-text'}; ?> 
     <?php } ?> 


    <?php if ($post['type'] == 'video') { ?> 
     <!--<?php echo $post{'video-source'}; ?>--> 
     <?php echo $post{'video-player'}; ?> 
     <?php echo $post{'video-caption'}; ?> 
     <?php } ?> 

    <?php if ($post['type'] == 'conversation') { ?> 
     <?php echo $post{'audio-caption'}; ?> 
     <?php echo $post{'audio-player'}; ?> 
     <?php echo $post{'audio-plays'}; ?> 
     <?php } ?> 

<div id="post-date"> 
<?php echo date("jS D M, H:i",strtotime($post['date'])); ?>&nbsp; &nbsp;<a href="<?php echo $post['url-with-slug']; ?>">Read on Tumblr</a> 
</div> 

</div> 



<?php }?> 


<div id="tumblr_down"></div> 
<script type="text/javascript"> 
// load the api response 
$.getJSON('http://tumblruptime.apigee.com/json?callback=?', function (response) { 
    // check if an api method is broken 
    if (!response.methods['/api/read'].up) { 
        $('#tumblr_down').text('Tumblr seems to not want to work with me right now. You can still try and view the posts on blog.dgovil.com. Service provided by http://tumblruptime.icodeforlove.com/apiinfo'); 
    } 
}); 
</script> 

<div id="tumblr_postnav"> 
<a href="<?php echo '?offset='.($offset + 10) ?>" id="tumblr_next">Older posts</a> 
<a href="<?php echo '?offset='.($offset - 10) ?>" id="tumblr_prev">Newer Posts</a> 
</div> 

謝謝!

回答

1

使用PHP解釋JSON電話:

<?php 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,"http://username.tumblr.com/api/read/json"); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
$result = curl_exec($ch); 
curl_close($ch); 

$result = str_replace("var tumblr_api_read = ","",$result); 
$result = str_replace(';','',$result); 
$result = str_replace('\u00a0','&amp;nbsp;',$result); 

$jsondata = json_decode($result,true); 
$posts = $jsondata['posts']; 

foreach($posts as $post){ 
echo $post['photo-url-500'].'</br>'; 
} 
?> 

你要這樣來做B/C的tumblr的JSON的反應似乎是不規範的。您可以將foreach循環更改爲for循環或任何您想要的輸出來獲得輸出。

+0

而不是修復此程序,將其轉換爲使用JSON。 XML看起來有點亂,但JSON也是如此。但是,JSON輸出更易於使用,IMO。 – reeeky2001 2011-04-20 18:01:27