2
respostas

Validação customizada não funciona 100%

A validação da função nao_tenha_a_palavra_melhor não funciona caso a primeira palavra seja "melhor".

Ex: melhor bola de futebol

Obs: caso comece com maiúsculo, funciona! "Melhor bola de futebol"

2 respostas

Oi Leandro, tudo bom?

Posso dar uma olhada no seu método nao_tenha_a_palavra_melhor? Assim fica mais fácil analisar o motivo =)

Repare que a função strpos é case sensitive. Ou seja, ela diferencia maiusculas de minusculas. Caso você queria uma função que verifica a ocorrencia de uma string dentro de outra sem diferenciar maiusculas de minusculas você pode usar a função stripos

Aguardo retorno.

Abraço!

Olá André, obrigado pelo retorno. Segue meu código:

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");

Do jeito que está, com strpos, só funciona se a palavra melhor for escrita com M maiúsculo. Com stripos não pega de forma alguma.