Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilson

[Resolvido] Expressões regulares pra identificar imagem

Recommended Posts

Olá Pessoal

 

estou fazendo um leitor de RSS de noticias da quatro rodas, entretanto, eles nao mostram imagem no rss.

gostaria de saber se existe uma forma de, por expressoes regulares identificar o que é <img src=""....

 

veja o texto

Modelo conceitual tem espaço para oito pessoas<p>Além de mostrar o novo EcoSport, o Salão de Nova Déli traz outras novidades interessantes para o resto do mundo. A Hyundai aproveitou o evento para exibir a Hexa Space MPV, carro-conceito voltado para famílias que vivem em mercados emergentes.</p><img src="http://quatrorodas.com.br/imagens/hexa2.jpg" /><p>A grande novidade do conceito está em seu interior, que tem oito lugares dispostos de forma que podem ser mudados de lugar e se encaixam como um quebra-cabeças. O assento central dianteiro pode ser completamente rebatido no assoalho, assim como a ...

 

teria que tirar isso: <img src="http://quatrorodas.com.br/imagens/hexa2.jpg" />

 

alguem me dá uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$texto = 'veja o texto
Modelo conceitual tem espaço para oito pessoas<p>Além de mostrar o novo EcoSport, o Salão de Nova Déli traz outras novidades interessantes para o resto do mundo. A Hyundai aproveitou o evento para exibir a Hexa Space MPV, carro-conceito voltado para famílias que vivem em mercados emergentes.</p><img src="http://quatrorodas.com.br/imagens/hexa2.jpg" /><p>A grande novidade do conceito está em seu interior, que tem oito lugares dispostos de forma que podem ser mudados de lugar e se encaixam como um quebra-cabeças. O assento central dianteiro pode ser completamente rebatido no assoalho, assim como a ...';
preg_match_all("/<img.*\/>/",$texto,$imagens);
print_r($imagens);
?>

 

Será impressa na tela a imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

Era quase isso... mas ele ainda está mandando um pouco de texto... antes do <img, beleza, mas depois nao vai

Clique aqui pra ver o result

 

<table>
<?php
			class TotalFeed {

			  function ler_news() {
					 $file = simplexml_load_file('http://quatrorodas.abril.com.br/noticias/rss.xml');
					 foreach($file->channel as $res){
						foreach($res->item as $s){   
  ?>
     <tr>
       <td style="padding-left:22px; padding-right:43px; padding-left:65px">
       <table width="100%" border="0" cellspacing="0" cellpadding="0">
         <tr>
           <td width="28%" align="left" style="padding-right:5px">
           <?
		preg_match_all("/<img.*\/>/",($s->description),$imagens); ?>
            <img src="<?=print_r($imagens)?>" width="75" height="55" />';

		</td>
           <td width="72%" align="left" valign="top" style="padding-left:6px; border-left:solid 2px #333" class="texto_vermelho_news"><span class="data_cinza"><? echo substr(utf8_decode($s->pubdate),5,12);  ?></span><br />
             <br />
             <? echo "• <a href=".$s->link." class='texto_cinza' target='_blank'>".utf8_decode($s->title)."</a><br>";  ?></td>
         </tr>
       </table>
       </td>
     </tr>
     <tr>
       <td style="padding-left:22px; padding-right:43px; padding-left:65px"> </td>
     </tr>
     <? 
  }}}}
  $corpo = new TotalFeed();
  $corpo->ler_news(); ?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa ER que o Lucas postou está errada mesmo, ela está muito "gulosa". Usando o .* irá simplesmente pegar TUDO o que vier dali em diante.

 

Tente assim:

 

preg_match_all('/<img[^>]+>/i', $s->description, $imagens);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Leo

 

Ficou perfeito.

Ele está gerando um array das fotos...

     Array
(
   [0] => Array
       (
           [0] => <img src="http://quatrorodas.com.br/imagens/stradafena.jpg" />
           [1] => <img src="http://quatrorodas.com.br/imagens/ecofena.jpg" />
       )

)
1

 

só nao entendi como fazer pra pegar somente 1.

deveria ser somente <?=print_r($imagens[0])?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar minha contribuição final... pra mostrar as noticias da Quatro Rodas COM FOTO, é só copiar este codigo abaixo:

 

<table >
<?php
			class TotalFeed {

			  function ler_news() {
					 $file = simplexml_load_file('http://quatrorodas.abril.com.br/noticias/rss.xml');
					 foreach($file->channel as $res){
						 $x=0;
						foreach($res->item as $s){   
						$x++;
						if($x==6){
							break;
							}

		preg_match_all('/<img[^>]+>/i', $s->description, $imagens);  
           if($imagens[0][0] != ''){
  ?>
     <tr>
       <td align="left" style="padding-left:22px; padding-right:43px; padding-left:65px">
       <table width="100%" border="0" cellspacing="0" cellpadding="0">
         <tr>
           <td width="28%" align="left" style="padding-right:5px">
           <?
		preg_match_all('/<img[^>]+>/i', $s->description, $imagens); ?>
            <? echo substr($imagens[0][0],0,-3)." width=85px />";?> // pega somente a primeira foto do Array

		</td>
           <td width="72%" align="left" valign="top" style="padding-left:6px; border-left:solid 2px #333" class="texto_vermelho_news"><span class="data_cinza"><?  echo substr($s->pubDate,5,12);  ?></span><br />
             <br />
             <? echo "<a href=".$s->link." class='texto_vermelho_news' target='_blank'>".$s->title."</a><br>";  ?></td>
         </tr>
       </table>
       </td>
     </tr>
     <tr>
       <td style="padding-left:22px; padding-right:43px; padding-left:65px"> </td>
     </tr>
     <? 
		}}}}}
  $corpo = new TotalFeed();
  $corpo->ler_news(); ?>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Wilson, muitos usuários depois de serem ajudados simplesmente se evadem do fórum, sem dar alguma satisfação. Você ainda postou a solução final, para alguém que precisar futuramente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Lucas...

 

É o mínimo que posso fazer.

Tenho 12 anos de trabalho na área e cheguei onde estou com a ajuda do fórum... fiquei meio inativo porque tenho trabalhado menos com programação e aprendi bastante, de modo que não preciso apelar muito pra este fórum. Espero que o pessoal possa utilizar este código!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.