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 un exemple de texte sophistiqué :-
???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????
On dirait un caractère italique mais ce n'est pas italique. Il appartient en fait aux symboles alphanumériques mathématiques.
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 frontend 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.
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.
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é. Examinons cette solution, comprenons ses composants et voyons comment elle s'intègre de manière transparente :-
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.
Bien qu'un texte sophistiqué puisse ajouter un attrait visuel à la saisie de l'utilisateur, il pose des défis importants en termes 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 sophistiqués 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. ??
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3