剥离这个PHP代码的限制

时间:2013-07-15 09:22:23

标签: php wordpress

我发现此代码用于在RSS源上显示我的页面上的wordpress帖子。但是它有限制只显示5个帖子。

<?php
    $rss = new DOMDocument();
    $rss->load('http://wordpress.org/news/feed/');
    $feed = array();
    foreach ($rss->getElementsByTagName('item') as $node) {
        $item = array ( 
            'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
            'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
            'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
            'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
            );
        array_push($feed, $item);
    }
    $limit = 5;
    for($x=0;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $date = date('l F d, Y', strtotime($feed[$x]['date']));
        echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
        echo '<small><em>Posted on '.$date.'</em></small></p>';
        echo '<p>'.$description.'</p>';
    }
?>

例如,我可以将$ limit增加到“50”,但如果我的帖子少于50,则会显示错误。

我的猜测是删除这些行,但它似乎会阻止脚本运行:

$limit = 5;
for($x=0;$x<$limit;$x++)

4 个答案:

答案 0 :(得分:3)

虽然

$limit = count($feed);

可行,也可能导致大量文章被展示。

你可以尝试

$count = count($feed);
$limit = $count > 50 ? 50 : $count;

如果超过

,则会将其限制为50

答案 1 :(得分:2)

这应该做。您基本上将其限制为Feed中包含的所有项目。

$limit = count($feed);

我还会将其包裹在if中,以确保它有项目。

$limit = count($feed);
if ($limit > 0)
{
    for($x=0;$x<$limit;$x++) {
        $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
        $link = $feed[$x]['link'];
        $description = $feed[$x]['desc'];
        $date = date('l F d, Y', strtotime($feed[$x]['date']));
        echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
        echo '<small><em>Posted on '.$date.'</em></small></p>';
        echo '<p>'.$description.'</p>';
    }
}

答案 2 :(得分:1)

使用 limit feed 的数量

$limit = count($feed);

答案 3 :(得分:1)

您可以使用count()计算数组中元素的数量,如下所示:

$limit = count($feed); //store number of elements

if ($limit > 0) { //checking if at least one element exists

    for($x=0; $x<$limit ;$x++) { 
    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
    $link = $feed[$x]['link'];
    $description = $feed[$x]['desc'];
    $date = date('l F d, Y', strtotime($feed[$x]['date']));
    echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
    echo '<small><em>Posted on '.$date.'</em></small></p>';
    echo '<p>'.$description.'</p>';
    }

}

希望这有帮助!