Maison >développement back-end >tutoriel php >Normalisation du texte fantaisie en texte normal dans Laravel

Normalisation du texte fantaisie en texte normal dans Laravel

Susan Sarandon
Susan Sarandonoriginal
2024-10-06 18:08:30367parcourir

Normalizing Fancy Text to Normal Text in Laravel

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

La saisie de texte des utilisateurs n'est pas du tout intéressante. Avec l'avènement d'Unicode dans les smartphones, les utilisateurs ont désormais le luxe (et parfois la fantaisie) de saisir du texte dans une variété de styles et de formats. Des emojis aux signes diacritiques, des ligatures aux caractères pleine chasse, la gamme de « textes fantaisistes » peut être extrêmement déroutante ou difficile à comprendre par le système. Bien que visuellement attrayantes, ces variations de texte posent un défi important pour le système, notamment en termes de cohérence des données, de facilité de recherche et d'expérience utilisateur.

Voici l'exemple de texte fantaisie :-


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


On dirait un caractère italique mais ce n'est pas italique. Il appartient en fait aux symboles alphanumériques mathématiques.

Problème en PHP ?

Eh bien, un problème très évident est que PHP ne peut pas encoder en JSON les caractères UTF-8 déformés à la réception. Dans la manière moderne de faire du développement Web, où les API et les frameworks frontaux utilisent JSON pour transporter des données, cela pose un problème. S'ils sont mal traités, ces caractères déformés entraîneront une corruption des données, un crash ou des utilisateurs en colère.

Notre objectif est simple : - nous avons trouvé la solution qui convertira chaque texte sophistiqué en texte lisible normal.

Normaliseur PHP

Les formulaires de normalisation sont essentiels à la compréhension du processus de normalisation. Ils répondent à différents besoins linguistiques et techniques. Par exemple, le formulaire NFC combine les caractères dans leurs formes composées, tandis que NFD fait le contraire, décomposant les caractères composés en leurs éléments constitutifs. Les formes NFKC et NFKD vont plus loin, en considérant les caractères de compatibilité - repliant les variations de caractères dans une forme canonique. Ces formulaires garantissent que la comparaison, la recherche et le stockage de textes sont cohérents et fiables.

La solution ?

L'extrait de code fourni est un excellent exemple de l'approche PHP permettant de résoudre des problèmes complexes avec simplicité et efficacité. Décortiquons cette solution, comprenons ses composants et voyons comment elle s'intègre parfaitement :-


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;
}


L'utilisation est simple :-


$normalText = Utils::normalizeText($YOUR_FANCY_STRING)


Vous pouvez vous inscrire dans la fonction d'assistance pour la rendre plus facile à utiliser. Par exemple :-


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

// USAGE
$normalText = normalize_text($YOUR_FANCY_STRING)


À la base, cette fonction exploite la classe **Normalizer** de PHP, une partie de l'extension Internationalization (intl), pour gérer la normalisation. La classe **Normalizer** propose plusieurs formulaires de normalisation, chacun adapté à différents besoins de normalisation. Cette fonction parcourt ces formulaires, vérifiant si le texte est déjà normalisé dans un formulaire donné à l'aide de la fonction **isNormalized**. Sinon, il normalise le texte sous cette forme et renvoie la chaîne normalisée.


Conclusion

Bien qu'un texte sophistiqué puisse ajouter un attrait visuel à la saisie de l'utilisateur, il pose des défis importants en matière de traitement des données et d'interopérabilité des systèmes. Cependant, avec l'adoption de la classe Normalizer de PHP et la mise en œuvre de formulaires de normalisation, les développeurs peuvent surmonter ces défis et garantir que leurs applications maintiennent la cohérence et la fiabilité des données face à diverses entrées de texte.


Avez-vous des expériences ou des défis liés à la gestion de textes fantaisistes dans vos projets ? Comment résolvez-vous actuellement ces problèmes et trouvez-vous la classe Normalizer de PHP utile dans votre flux de travail ? Poursuivons la conversation et partageons nos idées pour nous aider mutuellement à naviguer dans les complexités du développement Web moderne. ??

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn