0

我正在尝试阅读 tumblr 提供的 xml 信息,以从 tumblr 创建一种新闻提要,但我非常卡住。

<?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 开始只是尝试修复它的另一种(实际上很愚蠢)方式。它仍然在第一个 -> 之后立即中断,因此显示“帖子[0] AS $post....ect”在屏幕上。

这是我在 PHP 中做过的第一件事,所以可能有一些我应该事先设置的明显的东西。我不知道也找不到类似的东西。

4

3 回答 3

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>';
            }
        }
    ?>
于 2012-07-11T12:22:14.530 回答
0

$xml->posts返回您的帖子节点,因此如果您想迭代您应该尝试的帖子$xml->posts->post节点,这使您能够遍历第一个帖子节点内的帖子节点。

此外,正如 Needhi 指出的那样,您不应该通过根节点(tumblr),因为$xml它本身就是根节点。(所以我修正了我的答案)。

于 2012-07-11T12:12:39.183 回答
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>';
    }
}
于 2012-07-11T11:19:10.723 回答