Comparar Strings no PHP
A comparação de strings é tarefa rotineira na vida de qualquer programador. Acredito que a maioria dos programadores PHP desconheçam ou simplesmente ignorem as funções de comparação de strings e acabam realizando a comparação como se estivessem comparando números, como no exemplo abaixo:
$var1 = 'A';
if($var1 == 'A') {
echo $var1.' igual A';
}
O que acontece nesse caso é que o PHP transforma os caracteres em números inteiros e realiza a comparação desses números.
Uma maneira melhor é utilizar as funções específicas de comparação como strcasecmp e strcmp. Essas funções são uma forma de fazer comparação de strings segura para binário, o PHP converte as strings em sua forma binária e compara os binários.
Ambas retornam um número inteiro, menor que 0 se string1 é menor do que string2, maior que 0 se string1 é maior do que string2 e 0 se as duas forem iguais.
A função strcasecmp compara duas strings sem diferenciar maiúsculas e minúsculas.
$var1 = 'A';
$var2 = 'a';
//comparacao case insensitive
if(strcasecmp($var1, $var2) == 0) {
echo $var1.' (igual) '.$var2; //Imprime 'A igual a'
}
A função strcmp compara duas strings diferenciando maiúsculas e minúsculas.
//comparacao case sensitive
if(strcmp($var1, $var2) != 0) {
echo $var1.' (diferente) '.$var2; //Imprime 'A diferente de a'
}
$var1 = 'A';
$var2 = 'B';
//comparacao case sensitive
if(strcmp($var1, $var2) != 0) {
echo $var1.' (diferente) '.$var2; //Imprime 'A diferente de B
}
Posts relacionados:
- CakePHP ou Rails
- SELECT com a classe de conexao
- Vinte e cinco dicas de performance para PHP
- Formatar data do MySQL com PHP
Tags: comparar string php, if php, PHP, strcasecmp, strcmp, string php
Postado em sexta-feira, junho 19th, 2009 at 20:36 na categoria PHP, Tutoriais. Siga o RSS 2.0 feed. You can leave a response, or trackback from your own site.
22/06/2009 as 10:23
Para que tudo isso se você pode fazer da seguinte forma ?
<?php
$v1 = ‘A’;
$v2 = ‘a’;
//————————————–
if( $v1 == $v2 )
{
echo ‘São iguais’;
}
else
{
echo ‘São diferentes’;
}
//————————————–
$v1 = ‘a’;
$v2 = ‘a’;
//————————————–
if( $v1 == $v2 )
{
echo ‘São iguais’;
}
else
{
echo ‘São diferentes’;
}
//————————————–
?>
22/06/2009 as 11:19
Wellington,
repare que no seu exemplo você está querendo comparar apenas a letra, independente de serem maiúsculas ou minúsculas.
Existem situações em que precisamos diferenciar maiúsculas e minúsculas. E usar uma função de comparação de strings não é “tudo isso” como você disse, não tem nada de complexo em utilizar uma função de comparação de strings.
Práticas assim são comuns para desenvolvedores que programam em linguagens como C por exemplo.
9/07/2010 as 15:23
Não tinha idéia dessa função. Valeu pelo post!
23/07/2010 as 9:18
Vlw aee.. me quebrou um galho..
Comparando com ‘==’ não estava tendo o resultado esperado, mas com o strcasecmp td certo
11/11/2010 as 8:11
Vlw galera ! sou novo em php e o forum do freelancers me ajuda a tirar as dúvidas vlws.