Unicodeでは、意味的に同じ文字を複数の方法で表現することができます。しかし、表現がバラバラなままだと、検索などで問題が発生することは容易に想像できます。そのため、表記を統一する仕組みとして「正規化」が用意されています。本稿ではPEARのI18N_UnicodeNormalizerを用いて、PHPでUnicodeの正規化を行う方法を紹介します。 はじめに 与えられた文字列を含む文書を返す検索機能を実装しているところを想像してください。 検索語として「ページ」が与えられれば、「ページ」という文字列を含む文書を返します。これは特に難しいことではありません。 半角の「ページ」が与えられたらどうでしょう。「ページ」と「ページ」を区別する必要がないような、一般的な文書検索においては、「ページ」という文字列を含む文書を返すのが望ましいはずです(もちろん、この2つは常に同一視できるわけではあ
![PHPにおけるUnicode文字列の正規化](https://cdn-ak-scissors.b.st-hatena.com/image/square/106c7e478be88bc515873fc79870c7b92dd94618/height=288;version=1;width=512/https%3A%2F%2Fcodezine.jp%2Fstatic%2Fcommon%2Fimages%2Fczlogo4fb_ogp.png)