Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá. Eu andei um tempo procurando algum método de verificar a presença de caracteres em uma string, mas nenhum era como eu queria, então fiz uma função mais simples e que satisfaz minhas necessidades. Porém ela faz loops, e de tanto ver gente com maus olhos para eles, acho que a função não ficou tão boa assim...
Segue o código fonte:
function contain($chars, $string, $all = false) {
$contain = false; // Armazena o retorno da função
switch($all) {
case true: // Caso seja obrigatória a presença de todos caracteres...
$occur_num = 0; // Número de ocorrências (sem repetir) de cada caractere
for($i = 0; $i < strlen($chars); $i++) {
if(strpos($string, $chars[$i]) !== false) // Verifica se contém o caracter na string
$occur_num++; // Caso contenha, incrementa o contador de ocorrências em 1
}
if($occur_num == strlen($chars)) // Verifica se o número de ocorrências é igual o número de caracteres passados para verificar
$contain = true; // Se for igual, a função retorna true (todos caracteres estão presentes na string)
break;
default: // Caso não seja obrigatória a presença de todos caracteres...
for($i = 0; $i < strlen($chars); $i++) {
if(strpos($string, $chars[$i]) !== false) // Verifica se contém o caracter na string
$contain = true; // Caso contenha, a função retorna true (ao menos um caractere está presente)
}
break;
}
return $contain;
}
// Exemplo de uso:
$email = "root@root-servers.net";
contain("@.", $email, true); // TRUE
Então... o Andrey sempre faz uma versão melhor e funcional dos códigos que mostro pra ele, então provavelmente esse aí dá pra melhorar também, hehe. Por enquanto estou tentando aqui fazer parar o loop imediatamente quando a função puder retornar true, evitando loops desnecessários. Se alguém tiver uma sugestão, agradeço :D
Até mais ^^
Carregando comentários...