«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Нормализация необычного текста в обычный текст в Laravel

Нормализация необычного текста в обычный текст в Laravel

Опубликовано 8 ноября 2024 г.
Просматривать:169

Normalizing Fancy Text to Normal Text in Laravel

Статья взята с https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78

Текстовый ввод от пользователей совершенно не интересен. С появлением Unicode в смартфонах пользователи теперь могут позволить себе роскошь (а иногда и прихоть) вводить текст в различных стилях и форматах. От смайлов до диакритических знаков, от лигатур до полноразмерных символов — диапазон «необычного текста» может быть чрезвычайно запутанным или трудным для понимания системой. Несмотря на привлекательный внешний вид, эти текстовые варианты представляют собой серьезную проблему для системы, особенно с точки зрения согласованности данных, возможности поиска и удобства взаимодействия с пользователем.

Пример необычного текста:-


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


Похоже на курсив, но это не курсив. На самом деле он принадлежит к математическим буквенно-цифровым символам.

Проблема в PHP?

Ну, очень очевидная проблема заключается в том, что PHP не может кодировать JSON деформированные символы UTF-8 при получении. При современном подходе к веб-разработке, когда API и интерфейсные платформы используют JSON для передачи данных, это проблема. При неправильном обращении такие деформированные символы приведут к повреждению данных, сбоям или раздражению пользователей.

Наша цель проста: - найти решение, которое преобразует любой причудливый текст в обычный читаемый текст.

Нормализатор PHP

Формы нормализации имеют решающее значение для понимания процесса нормализации. Они удовлетворяют различные лингвистические и технические потребности. Например, форма NFC объединяет символы в их составные формы, тогда как NFD делает противоположное, разлагая составные символы на составные части. Формы NFKC и NFKD идут дальше, рассматривая символы совместимости - свертывания вариаций символов в каноническую форму. Эти формы гарантируют согласованность и надежность сравнения, поиска и хранения текста.

Решение ?

Предоставленный фрагмент кода является прекрасным примером подхода PHP к решению сложных проблем с простотой и эффективностью. Давайте разберем это решение, разберемся в его компонентах и ​​посмотрим, как оно легко интегрируется :-


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


Использование простое: -


$normalText = Utils::normalizeText($YOUR_FANCY_STRING)


Вы можете зарегистрировать внутри вспомогательную функцию, чтобы ее было проще использовать. Например:-


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

// USAGE
$normalText = normalize_text($YOUR_FANCY_STRING)


По своей сути, эта функция использует класс PHP **Normalizer** — часть расширения интернационализации (intl) — для выполнения нормализации. Класс **Normalizer** предлагает несколько форм нормализации, каждая из которых адаптирована к различным потребностям нормализации. Эта функция перебирает эти формы, проверяя, нормализован ли уже текст в заданной форме, с помощью функции **isNormalized**. Если нет, он нормализует текст к этой форме и возвращает нормализованную строку.


Заключение

Хотя необычный текст может повысить визуальную привлекательность пользовательского ввода, он создает серьезные проблемы для обработки данных и совместимости систем. Однако с принятием класса PHP Normalizer и реализацией форм нормализации разработчики могут преодолеть эти проблемы и гарантировать, что их приложения сохраняют согласованность и надежность данных при вводе разнообразного текста.


Есть ли у вас опыт или проблемы, связанные с обработкой необычного текста в ваших проектах? Как вы в настоящее время решаете такие проблемы и считаете ли вы, что класс PHP Normalizer полезен в вашем рабочем процессе? Давайте продолжим разговор и поделимся своими мыслями, чтобы помочь друг другу разобраться в сложностях современной веб-разработки. ??

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/afiqiqmal/normalizing-fancy-text-to-normal-text-in-laravel-5805?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3