Freelancers BR

Encontre dicas, tutorias e empregos

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:

  1. CakePHP ou Rails
  2. SELECT com a classe de conexao
  3. Vinte e cinco dicas de performance para PHP
  4. Formatar data do MySQL com PHP

Tags: , , , , ,

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.

5 Respostas to “Comparar Strings no PHP”

  1. 22/06/2009 as 10:23

    Wellington (ursolouco) disse:

    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’;
    }
    //————————————–
    ?>

  2. 22/06/2009 as 11:19

    Lucas Renan disse:

    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.

  3. 9/07/2010 as 15:23

    Maicon Sobczak disse:

    Não tinha idéia dessa função. Valeu pelo post!

  4. 23/07/2010 as 9:18

    Bruno Fuhr disse:

    Vlw aee.. me quebrou um galho..
    Comparando com ‘==’ não estava tendo o resultado esperado, mas com o strcasecmp td certo :)

  5. 11/11/2010 as 8:11

    Érik Ramos disse:

    Vlw galera ! sou novo em php e o forum do freelancers me ajuda a tirar as dúvidas vlws.

Deixe seu comentário!