기사 출처: https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78
사용자의 텍스트 입력은 전혀 흥미롭지 않습니다. 스마트폰에 유니코드가 등장하면서 이제 사용자는 다양한 스타일과 형식으로 텍스트를 입력할 수 있는 사치(때로는 기발함)를 갖게 되었습니다. 이모티콘부터 발음 구별 부호, 합자, 전자 문자까지 '멋진 텍스트'의 범위는 시스템에서 매우 혼란스럽거나 이해하기 어려울 수 있습니다. 시각적으로 매력적이기는 하지만 이러한 텍스트 변형은 특히 데이터 일관성, 검색 가능성 및 사용자 경험 측면에서 시스템에 심각한 문제를 야기합니다.
멋진 텍스트의 예는 다음과 같습니다.-
???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????
이탤릭체 문자처럼 보이지만 이탤릭체는 아닙니다. 실제로는 수학 영숫자 기호에 속합니다.
음, 매우 명백한 문제는 PHP가 변형된 UTF-8 문자를 수신할 때 JSON으로 인코딩할 수 없다는 것입니다. API와 프런트엔드 프레임워크가 JSON을 사용하여 데이터를 전송하는 현대적인 웹 개발 방식에서는 이것이 문제가 됩니다. 잘못 처리하면 이러한 변형된 문자는 데이터 손상, 충돌 또는 분노한 사용자를 초래할 수 있습니다.
우리의 목표는 간단합니다. - 모든 멋진 텍스트를 일반적으로 읽을 수 있는 텍스트로 변환하는 솔루션을 내놓았습니다.
정규화 형식은 정규화 프로세스를 이해하는 데 중추적인 역할을 합니다. 그들은 다양한 언어적, 기술적 요구를 충족시킵니다. 예를 들어 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 클래스가 유용하다고 생각하시나요? 현대 웹 개발의 복잡성을 탐색하는 데 서로 도움이 되도록 대화를 계속하고 통찰력을 공유해 봅시다. ??
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3