2016-12-07 7 views
1

Мне нужна помощь с кодом читателя RSS, который я тестирую на своем сайте, сценарий работает нормально, но он показывает 20 каналов, и я хотел ограничить его номером i (например, например, 3 или 6).Ограничить количество RSS-каналов для извлечения

код это так:

<?php 
    //Feed URLs 
    $feeds = array(
     "https://robertsspaceindustries.com/comm-link/rss", 
    ); 

    //Read each feed's items 
    $entries = array(); 
    foreach($feeds as $feed) { 
     $xml = simplexml_load_file($feed); 
     $entries = array_merge($entries, $xml->xpath("//item")); 
    } 

    //Sort feed entries by pubDate 
    usort($entries, function ($feed1, $feed2) { 
     return strtotime($feed2->pubDate) - strtotime($feed1->pubDate); 
    }); 



    ?> 



    <ul><?php 
    //Print all the entries 
    foreach($entries as $entry){ 
     ?> 
     <li><a href="<?= $entry->link ?>"><?= $entry->title ?></a> (<?= parse_url($entry->link)['host'] ?>) 
     <p><?= strftime('%m/%d/%Y %I:%M %p', strtotime($entry->pubDate)) ?></p> 
     <p><?= $entry->description ?></p> 
     <img src="<?= $entry->children('media', true)->content->attributes()->url ?>" alt="" /> 

     </li> 

     <?php 
    } 
    ?> 
    </ul> 

я судимое искать решение с использованием переменной, но я не смог ... спасибо за вашу помощь! :)

+0

просто добавить 'break' на 'foreach', если хотите,' $ i = 0; Еогеасп() {$ я ++; if i = 3 break} 'или вырезать массив, срез или сращивание – Ghost

ответ

2

Просто добавьте счетчик и перерыв в цикле, если вы хотите ограничить результаты:

<ul> 
<?php 
$i = 0; // 3 - 6 
// Print all the entries 
foreach($entries as $entry) { 
    $i++; 
?> 
    <li> 
     <a href="<?= $entry->link ?>"><?= $entry->title ?></a> (<?= parse_url($entry->link)['host'] ?>) 
     <p><?= strftime('%m/%d/%Y %I:%M %p', strtotime($entry->pubDate)) ?></p> 
     <p><?= $entry->description ?></p> 
     <img src="<?= $entry->children('media', true)->content->attributes()->url ?>" alt="" /> 
    </li> 
<?php 
    if($i === 3) break; 
} 
?> 
</ul> 

Или просто сократить массив, используя array_splice:

<ul> 
<?php 
$entries = array_splice($entries, 0, 3); 
// Print all the entries 
foreach($entries as $entry) { ?> 
    <li> 
     <a href="<?= $entry->link ?>"><?= $entry->title ?></a> (<?= parse_url($entry->link)['host'] ?>) 
     <p><?= strftime('%m/%d/%Y %I:%M %p', strtotime($entry->pubDate)) ?></p> 
     <p><?= $entry->description ?></p> 
     <img src="<?= $entry->children('media', true)->content->attributes()->url ?>" alt="" /> 
    </li> 
<?php } ?> 
</ul> 
+0

Большое спасибо Ghost! вы гений, это сработало! я попытался поддержать ответ, но мне нужно 15 репутации ... –

+0

@fabiobinotti уверен, что это помогло – Ghost