How to get a specific position of in foreach with PHP

Asked

Viewed 144 times

-1

I am creating an application that I will have an RSS, and I created this script in PHP:

<?php
// permite requisições a urls externas
ini_set('allow_url_fopen', 1);
ini_set('allow_url_include', 1);
 
// caminho do feed do meu blog
$feed = 'https://www.conjur.com.br/rss.xml';
// leitura do feed
$rss = simplexml_load_file($feed);
// limite de itens
$limit = 1;
// contador
$count = 0;
 
// imprime os itens do feed
if($rss)
{
    foreach ( $rss->channel->item as $item )
    {
        // formata e imprime uma string
        printf('<a href="%s" title="%s" >%s</a><br />', $item->link, $item->title, $item->title);
        // incrementamos a variável $count
        $count++;
        // caso nosso contador seja igual ao limite paramos a iteração
        if($count == $limit) break;
    }
}
else
{
    echo 'Não foi possível acessar o blog.';
}

And I need to display a block with only one news and then another 4, but the first cannot repeat in the other 4.

What would be the best way to do this? Can someone please help me!

1 answer

1


You can check if there is in an array each of these RSS, if not it will add this link, so it is easier to be manipulated later, so you can even display as many and as you want.

This is an example based on your code:

<?php
// permite requisições a urls externas
ini_set('allow_url_fopen', 1);
ini_set('allow_url_include', 1);

// caminho do feed do meu blog
$feed = 'https://www.conjur.com.br/rss.xml';
// leitura do feed
$rss = simplexml_load_file($feed);
// limite de itens
$limit = 1;
// contador
$count = 8;
$noticias = array();

// imprime os itens do feed
if($rss)
{
    foreach ( $rss->channel->item as $item )
    {
        // formata e imprime uma string
        //printf('<a href="%s" title="%s" >%s</a><br />', $item->link, $item->title, $item->title);
        $link = $item->link;
        $titulo = $item->title;

        $noticia = "<a href='$link' title='$titulo'>$titulo</a><br />";

        if(!in_array($noticia,$noticias)){
            array_push($noticias,$noticia);
        }
        // incrementamos a variável $count
        $count++;
        // caso nosso contador seja igual ao limite paramos a iteração
        if($count == $limit) break;
    }
}
else
{
    echo 'Não foi possível acessar o blog.';
}

var_dump($noticias);
?>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.