"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Laravel에서 멋진 텍스트를 일반 텍스트로 정규화하기

Laravel에서 멋진 텍스트를 일반 텍스트로 정규화하기

2024-11-08에 게시됨
검색:842

Normalizing Fancy Text to Normal Text in Laravel

기사 출처: https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78

사용자의 텍스트 입력은 전혀 흥미롭지 않습니다. 스마트폰에 유니코드가 등장하면서 이제 사용자는 다양한 스타일과 형식으로 텍스트를 입력할 수 있는 사치(때로는 기발함)를 갖게 되었습니다. 이모티콘부터 발음 구별 부호, 합자, 전자 문자까지 '멋진 텍스트'의 범위는 시스템에서 매우 혼란스럽거나 이해하기 어려울 수 있습니다. 시각적으로 매력적이기는 하지만 이러한 텍스트 변형은 특히 데이터 일관성, 검색 가능성 및 사용자 경험 측면에서 시스템에 심각한 문제를 야기합니다.

멋진 텍스트의 예는 다음과 같습니다.-


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


이탤릭체 문자처럼 보이지만 이탤릭체는 아닙니다. 실제로는 수학 영숫자 기호에 속합니다.

PHP에 문제가 있나요?

음, 매우 명백한 문제는 PHP가 변형된 UTF-8 문자를 수신할 때 JSON으로 인코딩할 수 없다는 것입니다. 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)


기본적으로 이 함수는 국제화(intl) 확장의 일부인 PHP의 **Normalizer** 클래스를 활용하여 정규화를 처리합니다. **Normalizer** 클래스는 다양한 정규화 요구 사항에 맞게 조정된 여러 정규화 형식을 제공합니다. 이 함수는 이러한 양식을 반복하여 **isNormalized** 함수를 사용하여 주어진 양식에서 텍스트가 이미 정규화되었는지 확인합니다. 그렇지 않은 경우 텍스트를 해당 형식으로 정규화하고 정규화된 문자열을 반환합니다.


결론

멋진 텍스트는 사용자 입력에 시각적 매력을 더할 수 있지만 데이터 처리 및 시스템 상호 운용성에 심각한 문제를 야기합니다. 그러나 PHP의 Normalizer 클래스를 채택하고 정규화 형식을 구현함으로써 개발자는 이러한 문제를 극복하고 애플리케이션이 다양한 텍스트 입력에도 불구하고 데이터 일관성과 신뢰성을 유지할 수 있습니다.


프로젝트에서 멋진 텍스트를 처리하는 것과 관련된 경험이나 어려움이 있나요? 현재 이러한 문제를 어떻게 해결하고 있으며, 작업 흐름에 PHP의 Normalizer 클래스가 유용하다고 생각하시나요? 현대 웹 개발의 복잡성을 탐색하는 데 서로 도움이 되도록 대화를 계속하고 통찰력을 공유해 봅시다. ??

릴리스 선언문 이 기사는 https://dev.to/afiqiqmal/normalizing-fancy-text-to-normal-text-in-laravel-5805?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다. 그것
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3