Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos.
Estou necessitando desenvolver um pequeno leitor de RSS. Mas há um problema, eu tenho que apenas pegar as notícias com imagens.
Atualmente estou usando o seguinte código para pular as notícias que não tem imagens:
for ($i = 0; $i <= 2; $i++) {
set_time_limit(120);
//A procura de um item com imagem
for ($num = $i; $num < 20; $num++) {
$xml = simplexml_load_file($valor);
$link_imagem = $xml->channel->item[$num]->linkfoto;
if (!empty($link_imagem)) {
//Defini contador de itens com o valor de $i
$cont = $num;
$num = 20;
}
}
Ou seja, eu tenho que pegar 3 notícias (de 0 a 2) mas apenas as que contenham imagens, mas a validação acima não tem funcionado.
Eu estou transmitindo as notícias para uma página em HTML (um HTML para cada notícia).
Peço então ajuda da comunidade para me ajudar nessa questão..
Grato desde já.
Olá novamente,
Felizmente eu consegui resolver meu problema.
E para fins de ajuda aos futuros visitantes do tópico:
O intuito do script é pegar apenas 3 notícias do XML. E como faço utilização de diversos XMLs (diversas categorias) usei vários laços de repetição.
Primeiro atribuí os diversos XMLs em um array multidimensional. Algo em torno disso:
$urls = array(
'cotidiano' => "link do XML",
'celebridades' => "link do XML",
'economia' => "link do XML",
'entreterimento' => "link do XML",
'esporte' => "link do XML",
'internacional' => "link do XML",
'televisao' => "link do XML",
'divirta-se' => "link do XML",
'fortaleza' => "link do XML",
'esportes' => "link do XML",
'politica' => "link do XML",
'maisnoticias' => "link do XML",
);
Depois fiz uso de um foreach para rodar o código para cada XML:
foreach ($urls as $categoria => $valor)
Verifiquei se a URL estava disponível com cURL.
E então fiz a leitura do XML com com simpleXML.
Neste ponto usei mais um laço de repetição, o for para que o código de captura rodasse apenas 3 vezes, ou seja, para que pegasse apenas 3 notícias (de 0 à 2).
Aqui vem a parte ao qual estava com dificuldades. Eu estava tentando fazer com que o script capturasse uma notícia com imagem, dentro de várias que não continham, no caso a primeira que estivesse na ordem do XML. Mas também necessitava que no próximo loop do foreach o código não pegasse mais a mesma notícia, mas a próxima, e assim o mesmo com a terceira.
Então antes do foreach eu setei uma variável como array. (Acho que poderia ser até antes do for).
$anterior = array();
E então fiz uso de mais um outro foreach. (Mas outro??)
//A procura de um item com imagem
E é aí que a mágica aconteceu. Graças a um amigo do grupo Programação JAVA/PHP/C# que me ajudou na seguinte condição:
!empty($teste_imagem) && $teste_imagem != ""
E então as 3 notícias se repetiam, então aqui entra a função do array. O script guarda por cada uma das 3 vezes a url da imagem, logo coloquei na condição que o valor anterior da variável $teste_imagem não poderia estar contida dentro do array $anterior.
E assim solucionei minha dificuldade.
Até a próxima.