Função PHP Strpos DIferencia Letras Maiúsculas

A função strpos do PHP não está funcionando no seu script? Uma das possíveis razões pode ser o fato de strpos ser case sensitive, ou seja, a função strpos diferencia letas maiúsculas de minúsculas. Isto significa que se você fizer uma busca por “Aula” no texto “Hoje tem aula”, o resultado será o não encontro da palavra, e o retorno da função será o valor booleano “false”.

Quer tirar a prova, veja o código:

1
2
3
4
5
6
7
8
9
$texto = "Hoje tem aula";
 
$palavra = "Aula";
 
if(strpos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}
$texto = "Hoje tem aula";

$palavra = "Aula";

if(strpos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}

Solução

A solução é você converter a palavra e o texto a minúsculas com a outra função strtolower. Uma vez que você converterá a palavra e o texto para caixa-baixa (minúsculas), o script começará a casar a busca. Veja o código:

1
2
3
4
5
6
7
8
9
10
11
$texto = "Hoje tem aula";
$texto = strtolower($texto);
 
$palavra = "Aula";
$palavra = strtolower($palavra);
 
if(strpos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}
$texto = "Hoje tem aula";
$texto = strtolower($texto);

$palavra = "Aula";
$palavra = strtolower($palavra);

if(strpos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}

Pronto, agora o script funcionará conforme o esperado.

Stripos

O que poucos sabem é que há uma versão que não diferencia maiúsculas de minúsculas da função strpos, trata-se da função stripos. Veja como ficaria o código:

1
2
3
4
5
6
7
8
9
$texto = "Hoje tem aula";
 
$palavra = "Aula";
 
if(stripos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}
$texto = "Hoje tem aula";

$palavra = "Aula";

if(stripos($texto,$palavra) === false){
    echo "Não encontrado";
}else{
    echo "Encontrado";
}

O comportamento de stripos é idêntico ao de strpos, a diferença é que stripos não diferencia maiúsculas de minúsculas.

Preg_Match

Outra ideia é utilizar a o preg_match que trabalha com expressão regular. Veja o código como ficaria:

1
2
3
4
5
if (preg_match("/Aula/i", "Hoje tem aula")) {
    echo "Encontrado";
} else {
    echo "Não encontrado";
}
if (preg_match("/Aula/i", "Hoje tem aula")) {
    echo "Encontrado";
} else {
    echo "Não encontrado";
}

Note o “i” depois da barra “/”, este “i” aí diz para a função não diferenciar maiúsculas de minúsculas. Ou seja, colocando o “i” no final da ER você define-a como “case insensitive”.

Ah!, lembrando também que a função preg_match pode retornar três valores: 0 quando a busca não encontrou nada, 1 quando a busca encontrou algum resultado e false quando ocorrer algum erro.

Bom gente, fica a dica aí, até o próximo post aqui no blog Fazer Site.

Função PHP Strpos DIferencia Letras Maiúsculas
4.6 (92%) 5 votes

Leave a Reply