Como classificar de acordo com a ordem indicada: minúsculas, maiúsculas, números e símbolos?

Luqman Ahmad |

Eu sou novo em PHP e estou tentando fazer perguntas de programação que envolvem classificação. Eu quero resolver este problema em que a entrada e a saída são as seguintes.

Antes da classificação: 6Ata7 ~ 58jh & * (* HLy ^) & a [yjJ> 8] G8, $ 9 <Y; B:% ^

Após a classificação: jhytaayjYBJGAHL8968758 ~ & ( ^) & [>], $ <;:% ^

Preciso de ajuda para entender como classificar de acordo com a menção do estado de ordem no título e como posso obter o mesmo resultado da entrada e saída acima. Abaixo está o código em que estou trabalhando:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<body>
    <form name="form1" id="form1" method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
        <h5>Custom Sorts Self Test</h5>
        <label>Insert Characters You Want to Sort
            <input type="text" name="input" id="input">
        </label>
        <input type="submit" value="Submit">
    </form>

    <h1>Result</h1>

    <?php 
        function reverseString($string){
            $stringlen = strlen($string) - 1;
            $split_str = str_split($string, 1);

            $array = array();

            for($i = 0; $i <= $stringlen; $i++){
                array_push($array, $split_str[$i]);
            }

            rsort($array, SORT_STRING | SORT_NUMERIC | SORT_FLAG_CASE | SORT_NATURAL);

            return $array;
        }

        if(isset($_POST['input']) && !empty($_POST['input'])){
            echo '<pre>';
            echo 'Before sort: ';
            print_r($_POST['input']);
            echo '<br>--------------------<br>';
            echo 'After sort:' ;
            print_r(reverseString($_POST['input'])); 
            echo '</pre>';
        }
    ?>

</body>
</html>
Tim Biegeleisen

Uma opção seria classificar a matriz de caracteres de string usando uma função lambda. Podemos usar usort()na matriz, com uma função auxiliar get_rank()retornando um valor, de 1 a 4, dependendo se o caractere está em minúsculas, maiúsculas, numérico ou qualquer outra coisa (incluindo símbolos).

function get_rank($letter) {
    if (ctype_lower($letter)) {
        return 1;
    }
    else if (ctype_upper($letter)) {
        return 2;
    }
    else if (is_numeric($letter)) {
        return 3;    
    }
    else {
        return 4;
    }
}

$input = "6Ata7~58jh&*(*HLy^)&a[yjJ>8]G8,$9<Y;B:%^";
echo $input . "\n";
$letters = str_split($input);
usort($letters, function($a, $b) {
    return get_rank($a) > get_rank($b);
});
$output = implode("", $letters);
echo $output;

Isso imprime:

6Ata7~58jh&*(*HLy^)&a[yjJ>8]G8,$9<Y;B:%^
ajyjhatyYBAGJHL9886875,%:;~<$&)&]*>(*^[^

Observe que você não especificou nenhuma lógica para classificação dentro de grupos de letras minúsculas, símbolos, etc. A lógica acima pode ser modificada para incluir isso.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Java: Como classificar um ArrayList em ordem alfabética com distinção entre maiúsculas e minúsculas e com qualquer número Strings no final

Como adicionar o número na string de acordo com maiúsculas ou minúsculas?

Como classificar não diferencia maiúsculas de minúsculas com System.Dynamic.Linq?

Como classificar a lista de objetos em uma ordem que não diferencia maiúsculas de minúsculas?

classificar listas com letras minúsculas, maiúsculas e números

classificar listas com letras minúsculas, maiúsculas e números

Como classificar em ordem alfabética ignorando a distinção entre maiúsculas e minúsculas?

Classificar a ordem da matriz em maiúsculas e minúsculas

No Django com Postgresql 9.6, como classificar maiúsculas e minúsculas e acentos insensível?

Como classificar os resultados de maneira sensível a maiúsculas e minúsculas no PostgreSQL?

PagingAndSortingRepository como classificar não diferencia maiúsculas de minúsculas?

Defina a ordem de classificação do contentresolver para classificar sem distinção entre maiúsculas e minúsculas

Como encontrar as mesmas entradas em 2 séries de pandas, mas com diferenciação de maiúsculas e minúsculas

Como fazer com que o gráfico de pizza não faça distinção entre maiúsculas e minúsculas

Nomes de classes com maiúsculas e minúsculas iônicas, como SignInPage, não podem ser encontrados

HttpServletRequest e getHeader (): Como lidar adequadamente com cabeçalhos que não diferenciam maiúsculas de minúsculas?

jq Como filtrar o objeto de matriz não contém chave com maiúsculas e minúsculas?

Como separar maiúsculas e minúsculas com contador?

Como lidar com a sensibilidade a maiúsculas e minúsculas no PostgreSQL

Como substituo um vetor de palavras por letras maiúsculas e minúsculas, apenas com letras minúsculas?

Como diminuir o bloco de maiúsculas e minúsculas convertendo um número para um nome de mês?

Como tornar a entrada do usuário para símbolos que não diferenciam maiúsculas de minúsculas

Como tornar a entrada do usuário para símbolos que não diferenciam maiúsculas de minúsculas

Eu uso a função JavaScript para gerar uma senha forte com letras maiúsculas e minúsculas, símbolos e números, mas obtenho um erro de somente leitura

Como converter string com combinação de maiúsculas e minúsculas aleatoriamente

Como lidar com diferenciação de maiúsculas e minúsculas no Marklogic

Como fazer com que caracteres de string correspondam a minúsculas e maiúsculas em python

Como posso construir uma senha com 2 letras minúsculas, maiúsculas, números e pontuação aleatórios?

TSQL com diferenciação de maiúsculas e minúsculas

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo