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

Susan Sarandon
풀어 주다: 2024-10-06 18:08:30
원래의
329명이 탐색했습니다.

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 클래스가 유용하다고 생각하시나요? 현대 웹 개발의 복잡성을 탐색하는 데 서로 도움이 되도록 대화를 계속하고 통찰력을 공유해 봅시다. ??

위 내용은 Laravel에서 멋진 텍스트를 일반 텍스트로 정규화하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!