Jump to content


Photo

Mudar Palavra Digitada Em Uma Busca No Resultado


  • Faça o login para participar
2 replies to this topic

#1 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 05/08/2008, 17:14

Pessoal fiz um sistema de busca, está funcionando certinho, porém não estou conseguindo mudar as palavras que o kra digitou no campo da busca no resultado da busca.

Eu quero fazer um esquema igual o da busca aqui do fórum, se eu Digitar: "Sistema de Busca em php" na busca aqui do fórum, nos resultados tudo que é palvra que se encaixe nestas ele muda o fundo da palavra para amarelo, é isso que eu quero, mais não estou conseguindo.

O meu sistema é de notícia: então o kra digita: "Presidente da República", aí aparece os links com os títulos da notícia, clicando neste link vai para a página onde o kra vai ler a notiicia, é nesta página que eu quero mudar as palavras que ele digitou. Eu estou passando a palavra pelo link assim:

$palavra = str_replace(" ","_",$palavra); //coloco um "_" nos espaços vazios

echo "<a href='abrir_noticia.php?id_noticia=$id_noticia&palavra=$palavra'>$titulo_noticia</a>";

Na página abrir_notícia.php eu faço assim:

$id_noticia = $_GET['id_noticia'];
$palavra	= $_GET['palavra'];

$palavra = str_replace("_"," ",$palavra); //mudo onde tem o "_" para espaços vazios
$palavra = explode(" ",$palavra); // transformo $palavra em um array para pegar cada palavra separadamente

// AQUI EU FAÇO A CONSULTA SQL BLÁBLÁBLÁ

$noticia = $dados_noticia['campo_onde_tem_toda_a_noticia'];

//aqui mora o meu problema
for($i = 0; $i <= count($palavra)-1; $i++){
	 $noticia2 = str_ireplace("$palavra[$i]","<b><u><div class='palavra_busca'>$palavra[$i]</div></b></u>",$noticia);
}

echo $noticia2;

Este script só substitui a última palavra digitada e mais ele quebra uma linha. Supondo que ele tenha digitado "Presidente da república", mostra assim:

Hoje em Brasília o
Presidente da República(República muda) Luiz Inácio Lula da Silva

a classe palavra_busca está assim:
<style type="text/css">
.palavra_busca { background: #FFFFCE; float: left; }
</style>

Pessoal se alguém puder me dar um help eu sou muito grato...

#2 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 05/08/2008, 17:29

Dá para usar um preg_replace para isso (y)

Exemplo:

echo preg_replace("/(\b$palavra\b)/i",'<span>\\1</span>',$rs['campo_db'])

Onde $palavra é a palavra buscada, e $rs['campo_db'] será o campo onde a busca é realizada, isto é, onde a palavra está contida ;)

Para estilizar, basta usar CSS normalmente...

span {
color: #FFC;
}

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#3 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 05/08/2008, 18:56

Kra vlw hein, a parte do <span> deu certo, porém se eu digito duas ou mais palavra ele não substitui todas as palavras.

imagine o seguinte texto:

"Sabemos que o crescimento da tecnologia vêm trazendo muitos benefícios para toda a população mundial."

Aí o kra digita no campo de busca: "Benefícios da tecnologia";

no meu resultado tem que aparecer assim:

"Sabemos que o crescimento da tecnologia vêm trazendo muitos benefícios para toda a população mundial."

Neste que vc me mandou se eu digito duas ou mais palavras ele não substitui, uma ele substitui, duas ou mais não...


Kra vlw hein, a parte do <span> deu certo, porém se eu digito duas ou mais palavra ele não substitui todas as palavras.

imagine o seguinte texto:

"Sabemos que o crescimento da tecnologia vêm trazendo muitos benefícios para toda a população mundial."

Aí o kra digita no campo de busca: "Benefícios da tecnologia";

no meu resultado tem que aparecer assim:

"Sabemos que o crescimento da tecnologia vêm trazendo muitos benefícios para toda a população mundial."

Neste que vc me mandou se eu digito duas ou mais palavras ele não substitui, uma ele substitui, duas ou mais não...



Firehalk kra consegui, vlw mesmo hein, deixei assim

$noticia2 = preg_replace("/(\b$palavra[0]\b)/i","<span style='background: #FFFF80;'>\\1</span>",$noticia);

for($i = 0; $i <= count($palavra)-1; $i++){
	 $noticia2 = preg_replace("/(\b$palavra[$i]\b)/i","<span style='background: #FFFF80;'><u>\\1</u></span>",$noticia2);
}

Brigadão kra...

Edição feita por: Diego Viana, 05/08/2008, 18:55.





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq