Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ae pessoal, to precisando fazer um sistema de pesquisa em arquivos XML, eu consigo realizar essa busca usando IF, por exemplo:
foreach ( $rss->channel->item as $item )
{
if ($item->titulo == 'Brasil'){
printf('%s', $item->titulo);
}
}
Mas é horrível assim, pois se a pessoa digitar apenas "Brasil" na barra de busca e o titulo for “política do Brasil é criticada” ele não encontra o conteúdo.
Eu gostaria de usar o mesmo principio de pesquisa em banco de dados MySQL onde da pra pesquisar por palavras chaves usando o caractere coringa do MySQL que é o í de porcentagem (%) e o LIKE no lugar de =.
Exemplo:
SELECT FROM noticias WHERE titulo LIKE '%Brasil%'
Assim serão encontrados registros que tenham, por exemplo: “política do Brasil é criticada”, “vamos ao Brasil“, “Brasil é um pais de belezas naturais”.
Não precisa ser exatamente a mesma solução do MySQL mas sim que o resultado seja o mesmo do exemplo acima.
Entenderam o meu problema ?
Se alguém puder me ajudar com uma solução para o meu problema eu ficarei grato, vou postar abaixo o código que eu uso para ler os arquivos XML.
<?php
// permite requisições a urls externas
ini_set('allow_url_fopen', 1);
ini_set('allow_url_include', 1);
// caminho do feed
$urls[] = 'http://news.google.com.br/news?pz=1&cf=all&ned=pt-BR_br&hl=pt-BR&output=rss';
foreach($urls as $feed){
// leitura do feed
$rss = simplexml_load_file($feed);
// limite de itens
$limit = 100;
// contador
$count = 0;
// imprime os itens do feed
if($rss)
{
foreach ( $rss->channel->item as $item )
{
// formata e imprime o titulo do conteudo
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 xml.';
}
}
?>Era exatamente isso o que eu procurava, você ajudou muito meu trabalho Carlos Coelho, muito obrigado!
Caso vc deseje selecionar alguns nós filhos de cada item, use getElementsByTagName
foreach( $itens as $item )
{
$childNodes = $item->parentNode;
printf( '<strong>Título:</strong> %s<br/>
<strong>Link:</strong> <a href="%s">Click here</a><br/>',
$childNodes->getElementsByTagName( 'title' )->item( 0 )->nodeValue,
$childNodes->getElementsByTagName( 'link' )->item( 0 )->nodeValue
);
}
Cara, sua dúvida é interessante.
Usando DOMDocument com DOMXPath é sim possível realizar tal pesquisa.
Veja
{ Saídatitle: Frio pode ter provocado morte de morador de rua no RS - Diario de Guarapuava
link: http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNFYPN_B5yRIOwa17IngGCBGOZ-ptg&url=http://www.diariodeguarapuava.com.br/noticias/brasil/2,31915,24,07,frio-pode-ter-provocado-morte-de-morador-de-rua-no-rs.shtml
guid: tag:news.google.com,2005:cluster=52778425839881
category: Últimas notícias
pubDate: Wed, 24 Jul 2013 21:44:09 GMT
description:
Frio pode ter provocado morte de morador de rua no RS
Diario de Guarapuava
PORTO ALEGRE, RS, 24 de julho (Folhapress) - A onda de frio que atinge o Sul do país pode ter provocado uma morte ontem, no interior do Rio Grande do Sul. A Polícia Civil gaúcha suspeita que o morador de rua Marino Lourenço Fernandes, 53, tenha ...
Frio causa pelo menos uma morte no paísveja.com
Sul do País registra ao menos quatro mortes por causa do frioR7
Frio pode ter matado dois homens no RSDiário do Grande ABC
Globo.com -Jornal Correio do Povo (Assinatura) -GAZ
todos os 10 artigos »
;)