2011-07-18 73 views
1
<?php 

$name=$_REQUEST['tumblr_id']; 
if($name=="") 
{ 
$name=$getPageTumblrName; 
} 
$pCount=1; 
$photoPosts=$img_post; 
$numPosts = 7; 
$name=$getPageTumblrName; 
    echo $name; 
    $feedURL = "http://$name.tumblr.com/api/read/?num=$numPosts"; 

    $xml = @simplexml_load_file($feedURL); 
    echo "<pre>"; 
print_r($xml); 
echo "</pre>"; 

foreach(@$xml->posts->post as $post) 

{ 

    switch ($post['type']) { 
     case 'photo': 

      $photo[] = (string) $post->{'photo-caption'}; 
      $img[] = (string) $post->{'photo-url'}; 
      if($pCount==$photoPosts) 
      // echo "Here are your recent photo posts"; 
      for($i=0;$i<$photoPosts;$i++) 
      { 
       if(isset($img[$i])) 
       { 

       echo "<div style='width:518px;height:350px;border-bottom: 1px solid;margin:0px auto;'><div style='width:210px;height:200px;float:left;'>".'<img style="width:200px;height:200px;" src="' . $img[$i] . '" />'."</div><div style='width:300px;height:150px;float:right;'>"[email protected]($photo[$i],0,320)."</div></div><br>"; 
       } 
      } 
      $pCount=$pCount+1; 
      // else 
      // { 
      // echo "You have no recent uploaded photo posts"; 
      // } 

      break; 

     case 'regular': 
      $title= (string) $post->{'regular-title'}; 
      $body= (string) $post->{'regular-body'}; 
      $small_post = substr($body,0,320); 
      echo "<div style='width:518px;height:250px;border-bottom: 1px solid;'><div style='width:518px;height:50px;float:left;'>". $title ."</div><div style='width:518px;height:200px;float:left;'>".$small_post."</div></div><br>"; 
      break; 

     case 'audio': 
      $audio= (string) $post->{'audio-caption'}; 
      $audioply= (string) $post->{'audio-player'}; 
      $idtitle= (string) $post->{'id3-title'}; 
      $idartist= (string) $post->{'id3-artist'}; 
      echo "<div style='width:518px;height:100px;border-bottom: 1px solid;'><div style='width:518px;height:50px;float:left;'>". $audio ."</div><div style='width:518px;height:50px;float:left;'>".$audioply."</div></div><br>"; 
      break; 

     case 'link': 
      $link= (string) $post->{'link-text'}; 
      $linkul= (string) $post->{'link-url'}; 
      $linkdes= (string) $post->{'link-description'}; 
      echo "<div style='width:518px;height:350px;border-bottom: 1px solid;'><div style='width:518px;height:50px;float:left;'>". $link ."</div><div style='width:518px;height:50px;float:left;'>"."<a href='".$linkul."'>"."treesandboots"."</a></div><div style='width:518px;height:200px;float:left;'>"[email protected]($linkdes,0,320)."</div></div><br>"; 
      break; 

     case 'quote': 
      $text= (string) $post->{'quote-text'}; 
      $quote= (string) $post->{'quote-source'}; 
      echo "<div style='width:518px;height:150px;border-bottom: 1px solid;'><div style='width:518px;height:50px;float:left;'>" . $text ."</div><div style='width:518px;height:100px;float:left;'>".$quote."</div></div><br>"; 
      break; 

     case 'video': 
      $video= (string) $post->{'video-caption'}; 
      $videocap= (string) $post->{'video-source'}; 
      $videoply= (string) $post->{'video-player'}; 
      echo "<div style='width:518px;height:400px;border-bottom: 1px solid;'><div style='width:518px;height:50px;float:left;'>". $video ."</div><div style='width:518px;height:350px;float:left;'>".$videoply."</div></div><br>"; 
      break; 

     default: 
      echo "no post available"; 
      break; 
    } 
} 


?> 

我使用這個腳本,但得到的錯誤: -問題的foreach()

Warning: Invalid argument supplied for foreach() in /public_html/samples/tab/tumblr/controllers/feed.php on line 19 
+1

我懷疑你可能需要有'的foreach(@ $ XML->帖子爲$後)' - 但沒有看到什麼樣的XML很難告訴。我還強烈建議您刪除'@'符號以查看加載xml是否會產生任何錯誤。如果加載失敗,自然,你的XML將不會被填充 - 但你永遠不會知道它。 –

+0

@ user799100:要了解錯誤,應從腳本中刪除'@'錯誤抑制運算符。他們不幫你,他們讓你更難。改爲處理錯誤情況。 – hakre

+0

你在得到錯誤之前做了什麼?從什麼時候發生錯誤? – hakre

回答

1

嘗試採取的是@符號從$xml變量名在foreach。您只需要在simplexml_load_file()的通話中抑制警告。

+0

即使如此,如果加載成功或不成功,則必須檢查返回值。 – hakre

-1
foreach($xml->posts->post as $post) 
+1

謹慎解釋與OP的區別? –

0

它看起來每個中的第一個參數不是數組。

通過大多數RSS訂閱,我假設你想要foreach(@$xml->posts as $post)。 我也喜歡換我的foreach在if語句

if(count($xml->posts)) 
{ 
    foreach($xml->posts as $post) 
    { 
    //... 
    } 
}