記事の出典 https://medium.com/@hafiqiqmal93/normalizing-fancy-text-to-normal-text-in-laravel-7d9ed56d5a78
ユーザーからのテキスト入力はまったく面白くありません。スマートフォンに Unicode が登場したことで、ユーザーはさまざまなスタイルや形式でテキストを入力できる贅沢 (そして時には奇抜な) を手に入れることができるようになりました。絵文字から発音記号、合字から全角文字に至るまで、「装飾テキスト」の範囲は非常に混乱を招き、システムが理解するのが困難になる場合があります。これらのテキストのバリエーションは視覚的には魅力的ですが、特にデータの一貫性、検索性、ユーザー エクスペリエンスの点でシステムにとって重大な課題を引き起こします。
派手なテキストの例を次に示します:-
???????? ???? ? ??? ?????????? ????? ?? ??? ????? ??? ?? ?????????? ?? ??????? ???? ?????? ??? ??? ???? ????? ??? ? ?? ???? ?? ????? ??? ??????? ?? ???? ???? ?? ??? ?? ????? ??? ???????? ?????? ????? ?????, ?? ???? ??????? ???? ????..????? ?? ??? ????. ??? ?????? ???? ?? ???? ????? ?????????
斜体文字のように見えますが、斜体ではありません。これは実際には数学的英数字記号に属します。
そうですね、非常に明白な問題は、PHP が受信時に変形された UTF-8 文字を JSON エンコードできないことです。 API とフロントエンド フレームワークが JSON を使用してデータを転送する現代の Web 開発方法では、これが問題になります。このような変形された文字は、間違った扱いをすると、データの破損、クラッシュ、またはユーザーの怒りを引き起こす可能性があります。
私たちの目標はシンプルです:- あらゆる派手なテキストを通常の読みやすいテキストに変換するソリューションを開発しました。
正規化フォームは、正規化プロセスを理解する上で極めて重要です。さまざまな言語的および技術的なニーズに対応します。たとえば、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 開発の複雑さをお互いに乗り越えていきましょう。 ??
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3