# Normalizer クラス

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

## はじめに

正規化とは、文字や文字列を正式に決められた表現に変換する処理のことです。 これは、検索や並べ替えなどの際に比較をするときに特に重要となります。 ただ、それだけではなく、テキストを保存する際に表記を統一するために用いることもあります。

Unicode Consortium では、 アプリケーション側でのさまざまなニーズにあわせていくつかの正規化方式を定義しています。

- Normalization Form D (NFD) - Canonical Decomposition
- Normalization Form C (NFC) - Canonical Decomposition followed by Canonical Composition
- Normalization Form KD (NFKD) - Compatibility Decomposition
- Normalization Form KC (NFKC) - Compatibility Decomposition followed by Canonical Composition

これらの方式は、テキストに対する変換 (transformation) のセットとして定義されます。変換 (transformation) は、アルゴリズムとデータファイルの両方で表現します。

## クラス概要

class Normalizer {
/* 定数 */
public const int FORM_D;
public const int NFD;
public const int FORM_KD;
public const int NFKD;
public const int FORM_C;
public const int NFC;
public const int FORM_KC;
public const int NFKC;
public const int FORM_KC_CF;
public const int NFKC_CF;
/* メソッド */
public static function getRawDecomposition(string `$string`, int `$form` = `Normalizer::FORM_C`): ?string
public static function isNormalized(string `$string`, int `$form` = `Normalizer::FORM_C`): bool
public static function normalize(string `$string`, int `$form` = `Normalizer::FORM_C`): string|false
}

## 定義済み定数

以下の定数は、使用する正規化方式を定義するものです。

`Normalizer::FORM_C` int
  正規化形式C(NFC) - 正準等価性により分解し正準等価性によって合成
`Normalizer::FORM_D` int
  正規化形式D (NFD) - 正準等価性により分解
`Normalizer::NFD` int

`Normalizer::FORM_KC` int
  正規化形式KC(NFKC) - 互換等価性により分解し正準等価性によって合成
`Normalizer::NFKC` int

`Normalizer::FORM_KC_CF` int

`Normalizer::FORM_KD` int
  正規化形式KD(NFKD) - 互換等価性により分解
`Normalizer::NFKD` int

`Normalizer::NFC` int

`Normalizer::NFKC_CF` int

## 参考

- » Unicode Normalization
- » Unicode Normalization FAQ
- » ICU User Guide - Normalization
- » ICU API Reference - Normalization

## 変更履歴

バージョン | 説明
--- | ---
8.4.0 | クラス定数が型付けされました。
8.0.0 | `Normalizer::NONE` が削除されました。

## 目次

- Normalizer::getRawDecomposition — UTF-8 エンコードされているコードポイントから、Decomposition_Mapping プロパティの値を取得する
- Normalizer::isNormalized — 渡された文字列が、指定した正規化を適用済みかどうかを調べる
- Normalizer::normalize — 渡された入力を正規化し、正規化後の文字列を返す

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open