"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Normalizando texto sofisticado para texto normal no Laravel

Normalizando texto sofisticado para texto normal no Laravel

Publicado em 2024-11-08
Navegar:854

Normalizing Fancy Text to Normal Text in Laravel

Artigo originado de https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78

A entrada de texto dos usuários não é nada interessante. Com o advento do Unicode nos smartphones, os usuários agora têm o luxo (e às vezes o capricho) de inserir texto em diversos estilos e formatos. De emojis a diacríticos, de ligaduras a caracteres de largura total, a variedade de “textos sofisticados” pode ser extremamente confusa ou difícil de entender pelo sistema. Embora visualmente atraentes, essas variações de texto representam um desafio significativo para o sistema, especialmente em termos de consistência de dados, capacidade de pesquisa e experiência do usuário.

Aqui está um exemplo de texto sofisticado:-


???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????


Parece um caractere em itálico, mas não é itálico. Na verdade, pertence aos símbolos alfanuméricos matemáticos.

Problema em PHP?

Bem, um problema muito óbvio é que o PHP não pode codificar JSON de caracteres UTF-8 deformados após o recebimento. Na maneira moderna de desenvolver web, onde APIs e frameworks frontend usam JSON para transportar dados, isso é um problema. Se tratados incorretamente, esses caracteres deformados resultarão em corrupção de dados, falhas ou usuários irritados.

Nosso objetivo é simples: - criamos a solução que converterá todos os textos sofisticados em texto legível normal.

Normalizador PHP

Os formulários de normalização são fundamentais para a compreensão do processo de normalização. Eles atendem a diferentes necessidades linguísticas e técnicas. Por exemplo, o formulário NFC combina caracteres em suas formas compostas, enquanto o NFD faz o oposto, decompondo caracteres compostos em suas partes constituintes. Os formulários NFKC e NFKD vão além, considerando caracteres de compatibilidade - dobrando variações de caracteres em uma forma canônica. Esses formulários garantem que a comparação, a pesquisa e o armazenamento de texto sejam consistentes e confiáveis.

A solução ?

O trecho de código fornecido é um excelente exemplo da abordagem PHP para resolver problemas complexos com simplicidade e eficiência. Vamos dissecar esta solução, entender seus componentes e ver como ela se integra perfeitamente :-


public static function normalizeText($text): ?string
{
    if (!$text) {
        return null;
    }
    $intl = [
        \Normalizer::FORM_C,
        \Normalizer::FORM_D,
        \Normalizer::NFD,
        \Normalizer::FORM_KC,
        \Normalizer::NFKC,
        \Normalizer::FORM_KC_CF,
        \Normalizer::FORM_KD,
        \Normalizer::NFKD,
        \Normalizer::NFC,
        \Normalizer::NFKC_CF,
    ];
    foreach ($intl as $form) {
        if (!\Normalizer::isNormalized($text, $form)) {
            return \Normalizer::normalize($text, $form);
        }
    }
    return $text;
}


O uso é simples:-


$normalText = Utils::normalizeText($YOUR_FANCY_STRING)


Você pode se registrar dentro da função auxiliar para facilitar o uso. Por exemplo:-


if ( ! function_exists('normalize_text')) {
    function normalize_text(string $text): string
    {
         return Utils::normalizeText($text)
    }
}

// USAGE
$normalText = normalize_text($YOUR_FANCY_STRING)


Em sua essência, esta função aproveita a classe **Normalizer** do PHP - uma parte da extensão Internacionalização (intl) - para lidar com a normalização. A classe **Normalizer** oferece vários formulários de normalização, cada um adaptado a diferentes necessidades de normalização. Esta função itera por esses formulários, verificando se o texto já está normalizado em um determinado formulário usando a função **isNormalized**. Caso contrário, ele normaliza o texto para esse formato e retorna a string normalizada.


Conclusão

Embora o texto sofisticado possa adicionar apelo visual à entrada do usuário, ele apresenta desafios significativos para o processamento de dados e a interoperabilidade do sistema. No entanto, com a adoção da classe Normalizer do PHP e a implementação de formas de normalização, os desenvolvedores podem superar esses desafios e garantir que suas aplicações mantenham a consistência e a confiabilidade dos dados diante de diversas entradas de texto.


Você tem alguma experiência ou desafio relacionado ao manuseio de textos sofisticados em seus projetos? Como você atualmente aborda esses problemas e acha a classe Normalizer do PHP útil em seu fluxo de trabalho? Vamos continuar a conversa e compartilhar nossos insights para ajudar uns aos outros a navegar pelas complexidades do desenvolvimento web moderno. ??

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/afiqiqmal/normalizing-fancy-text-to-normal-text-in-laravel-5805?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3