Artículo originado en https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78
Los comentarios de texto de los usuarios no son nada interesantes. Con la llegada de Unicode a los teléfonos inteligentes, los usuarios ahora tienen el lujo (y a veces la fantasía) de ingresar texto en una variedad de estilos y formatos. Desde emojis hasta signos diacríticos, desde ligaduras hasta caracteres de ancho completo, la variedad de "texto sofisticado" puede resultar extremadamente confusa o difícil de entender para el sistema. Si bien son visualmente atractivas, estas variaciones de texto plantean un desafío importante para el sistema, particularmente en términos de coherencia de los datos, capacidad de búsqueda y experiencia del usuario.
Aquí está el ejemplo de texto elegante:-
???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????
Parece un carácter en cursiva pero no lo es. En realidad pertenece a los símbolos alfanuméricos matemáticos.
Bueno, un problema muy obvio es que PHP no puede codificar JSON caracteres UTF-8 deformados al recibirlos. En la forma moderna de desarrollar web, donde las API y los marcos frontend utilizan JSON para transportar datos, esto es un problema. Si se tratan incorrectamente, estos caracteres deformados provocarán corrupción de datos, fallas o usuarios enojados.
Nuestro objetivo es simple: encontramos la solución que convertirá cada texto sofisticado en texto legible normal.
Los formularios de normalización son fundamentales para comprender el proceso de normalización. Atiende diferentes necesidades lingüísticas y técnicas. Por ejemplo, la forma NFC combina caracteres en sus formas compuestas, mientras que NFD hace lo contrario: descompone los caracteres compuestos en sus partes constituyentes. Las formas NFKC y NFKD van más allá, considerando la compatibilidad de caracteres - plegando variaciones de caracteres en una forma canónica. Estos formularios garantizan que la comparación, la búsqueda y el almacenamiento de texto sean consistentes y confiables.
El fragmento de código proporcionado es un excelente ejemplo del enfoque PHP para resolver problemas complejos con simplicidad y eficiencia. Analicemos esta solución, comprendamos sus componentes y veamos cómo se integra perfectamente:-
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; }
El uso es simple:-
$normalText = Utils::normalizeText($YOUR_FANCY_STRING)
Puedes registrarte dentro de la función auxiliar para que sea más fácil de usar. Por ejemplo:-
if ( ! function_exists('normalize_text')) { function normalize_text(string $text): string { return Utils::normalizeText($text) } } // USAGE $normalText = normalize_text($YOUR_FANCY_STRING)
En esencia, esta función aprovecha la clase **Normalizador** de PHP, una parte de la extensión Internacionalización (intl), para abordar la normalización. La clase **Normalizador** ofrece varias formas de normalización, cada una adaptada a diferentes necesidades de normalización. Esta función itera a través de estos formularios, verificando si el texto ya está normalizado en un formulario determinado usando la función **isNormalized**. De lo contrario, normaliza el texto a esa forma y devuelve la cadena normalizada.
Si bien el texto sofisticado puede agregar atractivo visual a la entrada del usuario, plantea desafíos importantes para el procesamiento de datos y la interoperabilidad del sistema. Sin embargo, con la adopción de la clase Normalizer de PHP y la implementación de formularios de normalización, los desarrolladores pueden superar estos desafíos y garantizar que sus aplicaciones mantengan la coherencia y confiabilidad de los datos frente a diversas entradas de texto.
¿Tiene alguna experiencia o desafío relacionado con el manejo de texto sofisticado en sus proyectos? ¿Cómo aborda actualmente estos problemas? ¿Considera útil la clase Normalizador de PHP en su flujo de trabajo? Continuemos la conversación y compartamos nuestras ideas para ayudarnos mutuamente a navegar por las complejidades del desarrollo web moderno. ??
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3