ホームページ >バックエンド開発 >PHPチュートリアル >Laravelでファンシーテキストを通常のテキストに正規化する

Laravelでファンシーテキストを通常のテキストに正規化する

Susan Sarandon
Susan Sarandonオリジナル
2024-10-06 18:08:30372ブラウズ

Normalizing Fancy Text to Normal Text in Laravel

記事の出典 https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78

ユーザーからのテキスト入力はまったく面白くありません。スマートフォンに Unicode が登場したことで、ユーザーはさまざまなスタイルや形式でテキストを入力できる贅沢 (そして時には奇抜な) を手に入れることができるようになりました。絵文字から発音記号、合字から全角文字に至るまで、「装飾テキスト」の範囲は非常に混乱を招き、システムが理解するのが困難になる場合があります。これらのテキストのバリエーションは、視覚的には魅力的ですが、特にデータの一貫性、検索性、ユーザー エクスペリエンスの点でシステムにとって重大な課題を引き起こします。

派手なテキストの例を次に示します:-


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


斜体文字のように見えますが、斜体ではありません。これは実際には数学的英数字記号に属します。

PHP に問題がありますか?

そうですね、非常に明白な問題は、PHP が受信時に変形された UTF-8 文字を JSON エンコードできないことです。 API とフロントエンド フレームワークが JSON を使用してデータを転送する現代の Web 開発方法では、これが問題になります。このような変形された文字は、間違った扱いをすると、データの破損、クラッシュ、またはユーザーの怒りを引き起こす可能性があります。

私たちの目標はシンプルです:- あらゆる派手なテキストを通常の読み取り可能なテキストに変換するソリューションを開発しました。

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 クラスがワークフローで役立つと感じていますか?会話を続けて洞察を共有し、現代の Web 開発の複雑さをお互いに乗り越えていきましょう。 ??

以上がLaravelでファンシーテキストを通常のテキストに正規化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。