Não sei porque mas minha aplicação esta executando a função ao contrario, no lugar de não cadastrar se tiver a palavra "melhor", ele só cadastra se tiver a palavra melhor. veja:
public function nao_tenha_a_palavra_melhor($nome) {
$posicao = strpos($nome, "melhor");
if($posicao !== FALSE){
return TRUE;
} else {
$this->form_validation->set_message("nao_tenha_a_palavra_melhor", "O campo '%s' não pode conter a palavra 'melhor'");
return FALSE;
}
}
$this->form_validation->set_rules("nome", "nome", "required|min_length[5]|callback_nao_tenha_a_palavra_melhor");