Ir para conteúdo
Fórum Script Brasil
  • 0

Busca PHP


Vithor

Pergunta

Oi pessoal!

Eu sei que já tem alguns tópicos sobre busca aqui no fórum, eu pesquisei, mas nenhum consegue me ajudar (tem um que tem a mesma dúvida mas não foi respondida :S).

Eu tenho um site em que a ÚNICA tabela do BD é a de notícias (ou seja, único conteúdo gerenciável do site). Fazer a busca em notícias eu sei, é fácil. Usando SQL e a cláusula LIKE é sussegado.

O meu problema é quanto ao resto do site. Eu preciso fazer uma busca no CONTEÚDO do site, ou seja, em tudo que tiver de texto em todas as páginas. A minha idéia é criar uma string enorme com várias palavras chaves para cada "área" e depois fazer um "strpos" em cada string.

Basicamente:

$campo = strtolower($_GET["busca"]);;
$str = "sobre empresa informações about us instituição institucional";
$haResult = false;
if(strpos($str, $campo) !== false)
{
    echo "Resultado encontrado em 'Sobre'";
    $haResult = true;
}
... // fazer isso para as outras áreas do site...
if(!$haResult)
   echo "Não foram encontrados resultados para a sua pesquisa.";
Usei algumas palavras em inglês pois o site possui 3 versões (portuguesa, inglesa e espanhola...). O problema se dá no uso de acentos e "caracteres especiais". Digamos que o usuário busque pela palavra "informações". Pelo teste que eu fiz, o site não acha resultado. Já tentei fazer vários "str_replace" nos acentos e substituir "õ" por "õ", por exemplo, e assim por diante. Vocês tem alguma idéia de como resolver esse problema? A página de busca no caso é incluída (include) pela "index.php". Na index, eu tenho a seguinte tag:
<meta http-equiv="Content-type: text/html; charset=utf-8;">

E em TODAS as páginas do site eu tenho os acentos feitos na forma HTML, ou seja, 'á' vira 'á'; 'é' vira '&eeacute;'; 'ç' vira 'ç'; e assim por diante.

Alguém ajuda?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Rapaz nunca precisei fazer isso , mais eu tive uma ideia não sei se é o modo certo mais ai vai a ideia.

Você pode criar um array com todas as página do seu site.

Ex.:

<?php
$pagina_site = array('index.php','contato.php','downloads.php');
?>

Dai você usa file_get_contents(),htmlenties() e abre a pagina do array, e faz a busca das palavras usando expressão regular nesse arquivo.

Dai você poderia usar foreach pra procurar em todos as paginas do array.

Tenta esse raciocínio ai.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Então, isso seria praticamente a mesma coisa que eu pensei, a única diferença é que essa função realmente pega a página toda. Não sei se é isso o que eu quero, mas legal, é uma opção.

Mas o problema dos acentos continua. Fiz um teste pegando o campo por GET e procurando ele na págnia "sobre.php" por exemplo, e não achou quando tinha acentos.

Ao usar htmlentities("América") (postei isso num 'alert' em JS) recebo o seguinte:

Am&Atilde;&copy;rica

Ou seja, ele substituiu "é" por "&Atilde;&copy;". Eu sei que acentos possuem algo como "dois códigos ASCII" ou coisa assim, mas alguma idéia de como traduzir essas porcarias de acentos?

Editado por Vithor
Link para o comentário
Compartilhar em outros sites

  • 0

Bom pessoal, procurando um pouco no pai dos burros, vulgo Google, eu achei o site:

http://filosofiadevida.marcocarvalho.com/r...-php-enconding/

e a solução dele resolveu o problema "parcialmente". Eu consegui remover os acentos e as cedilhas da string do campo, que vem por GET. O ideal seria se desse pra substituir por acentos, mas eu tentei e dá pau, provavelmente por causa da codificação. Portanto, eu acho que eu vou acabar fazendo algumas strings "keywords", que contenham palavras chave de cada área do site, e nelas eu NÃO vou usar acentos, e aí o campo vai estar sem acento também, e aí vai achar. Valeu pessoal!

Pode fechar ;D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...