Ir para conteúdo

Arquivado

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

lucaswxp

Smart Search Function

Recommended Posts

Olá galera.

Esta função divide um string - em base dos espaços contidos nela - e retorna várias, ou uma, cláusula "LIKE" para o uso numa consulta. Funciona como os search engines modernos. (Google, Yahoo, etc).

 

Utilização:

echo smart_search('nome_coluna', 'tutoriais cakephp para iniciantes');

Retorno:

nome_coluna LIKE '%tutoriais%' OR nome_coluna LIKE '%cakephp%' OR nome_coluna LIKE '%para%' OR nome_coluna LIKE '%iniciantes%'

Exemplo de situção real:

mysql_query('SELECT * FROM registros WHERE ' . smart_search('titulo', $palavras_chaves));
A função já adionará slashes automaticamente nas strings, mas você pode passar "false" para o terceiro parâmetro caso não queira.

 

Função:

function smart_search($column, $text, $addslashes = true){
    $arr_text = array_filter(explode(' ', $text));
    $last = end(array_keys($arr_text));
    $return = '';
    foreach($arr_text as $key => &$item){
            $return .= $column;
            $return .= " LIKE '%";
            $return .= $addslashes ? addslashes($item) : $item;
            $return .= "%'";
            if($key != $last) $return .= ' OR ';
    }
    return $return;
}

Simples, mas útil. Aproveitem.

[EDIT]

22/02/2010 - Bug fixed

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.