2012-07-11 44 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>'; 
      } 
     } 
    ?>