Ordenando Strings acentuadas em PHP

Olá,

No meu terceiro post vou pegar o gancho do post do Bruno Vasconcelos e fazer a versão PHP para o pequeno problema da ordenação de Strings acentuadas.

Muitas vezes nos deparamos com a situação de ordenar um array de string e em muitos casos simplesmente fazemos uma chamada à função nativa sort(), passando o array que queremos ordenar como parâmetro. Ela resolve muito bem nossos problemas. Mas como toda regra tem sua exceção, esta função não está programada para ordenar palavras acentuadas.

Olhando o manual da função vemos que ela possui parâmetros opcionais, dentre eles uma flag chamada SORT_LOCALE_STRING na qual podemos configurá-la para fazer com que a função compare as strings de acordo com uma determinada lingua local. Para isso, basta utilizar a função, também nativa, setlocale() definindo-a para utilizar o padrão brasileiro.

Assim teremos o nosso código final:

<?php
        $lista = array(1 => 'Henrique',
                                                 2 => 'Ítalo',
                                                 3 => 'Felipe',
                                                 4 => 'Ênio',
                                                 5 => 'Marcos'
                                        );
 
        //Exibir array desordenado
        foreach($lista as $nome){
                echo $nome . ", ";
        }
        sort($lista);
        echo "<BR>";
       
        //Exibir array ordenado com exceção das palavras acentuadas
        foreach($lista as $nome){
                echo $nome . ", ";
        }
       
        /* Configurando o locale para informações em Português-BR
         * LC_ALL - afeta todas as funções abaixo
         */
        setlocale(LC_ALL, "pt_BR", "ptb");
        sort($lista, SORT_LOCALE_STRING);
        echo "<BR>";
       
        //Exibe o array ordenado de acordo a lingua local - Português-BR
        foreach($lista as $pessoa){
                echo $pessoa . ", ";
        }
?>

E a seguinte saída:

_

Simples e bastante intuitivo. 😉

Até a próxima!

Anúncios

Um comentário em “Ordenando Strings acentuadas em PHP”

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s