Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...