2012-07-11 83 views
0

我試圖閱讀tumblr提供的xml信息來創建一種關閉tumblr的新聞饋送,但我很困難。PHP SimpleXML當試圖遍歷節點時突然崩潰

<?php 
    $request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text'; 
    $xml = simplexml_load_file($request_url); 

    if (!$xml) 
    { 
     exit('Failed to retrieve data.'); 
    } 
    else 
    { 
     foreach ($xml->posts[0] AS $post) 
     { 
      $title = $post->{'regular-title'}; 
      $post = $post->{'regular-body'}; 
      $small_post = substr($post,0,320); 

      echo .$title.; 
      echo '<p>'.$small_post.'</p>'; 
     } 
    } 
?> 

它試圖通過節點時總是斷開。所以基本上「tumblr-> posts; .... ect」顯示在我的html頁面上。

我試過將信息保存爲本地xml文件。我試過用不同的方法來創建simplexml對象,就像將它加載爲一個字符串(可能是一個愚蠢的想法)。我仔細檢查了我的網站主辦運行PHP5。所以基本上,我被困在爲什麼這不起作用。

編輯:好吧我嘗試改變我從哪裏開始(回到原來的方式,從tumblr開始只是另一個(實際上很愚蠢)的方式來嘗試修復它。因此在屏幕上顯示「posts [0] AS $ post .... ect」

這是我在PHP中做過的第一件事情,所以可能有些事情我應該事先設置好我不知道,但沒有找到這樣的事情雖然

回答

0

這應該工作:

<?php 
$request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text'; 
$xml = simplexml_load_file($request_url); 

if (!$xml){ 
    exit('Failed to retrieve data.'); 
}else{ 
    foreach ($xml->posts[0] AS $post){ 
     $title = $post->{'regular-title'}; 
     $post = $post->{'regular-body'}; 
     $small_post = substr($post,0,320); 

     echo $title; 
     echo '<p>'.$small_post.'</p>'; 
     echo '<hr>'; 
    } 
} 
0

$xml->posts回報你的帖子節點,所以如果你想迭代節點,你應該嘗試$xml->posts->post,它給你通過節點遍歷第一帖子裏面節點的能力。

同樣Needhi指出你不應該通過根節點(tumblr),因爲$xml代表自己是根節點。 (所以我解決了我的答案)。

0
First thing in you code is that you used root element that should not be used. 

    <?php 
     $request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text'; 
     $xml = simplexml_load_file($request_url); 

     if (!$xml) 
     { 
      exit('Failed to retrieve data.'); 
     } 
     else 
     { 

      foreach ($xml->posts->post as $post) 
      { 
       $title = $post->{'regular-title'}; 
       $post = $post->{'regular-body'}; 
       $small_post = substr($post,0,320); 
       echo .$title.; 
       echo '<p>'.$small_post.'</p>'; 
      } 
     } 
    ?>