プログラミングゆるめモ

プログラミングに関することをゆるくメモしてます

PHP

PHP 日本語ドメインの扱い方

最近、日本語ドメインが増えてきています。
http://ちょめちょめ.jp ・・・こんな感じのドメインですね。
http://cyomecyome.コム ・・・こんなのもあります。
この日本語ドメインを含んだURLを直接、英数字のドメインと同じようにPHPにパラメータとして渡しても、正しく処理することはできません。

そこで登場するのが、Punycodeです。ピュニコードと読みます。
日本語ドメインは、一旦Punycodeへ変換してから、PHPに渡す必要があります。
Punycodeは、「xn--h9ja9gb1ac」こんな感じの英数字文字列です。
プレフィクスとして「xn--」が必ず文字列先頭に付加されます。
日本語とPunycodeとの相互変換を簡単に行うことができる場所として、ここが有名です。

さて、PHPで日本語をPunycodeに変換するときはどうするのでしょうか。
PearというPHPから利用できるライブラリが有名です。
Pearには多くのパッケージがあり、パッケージ毎にサーバにインストールすることができます。
PearのパッケージのひとつであるNet_IDNA2には、ピュニコードの相互変換機能があります。
ですので、使っているサーバに、PearそしてNet_IDNA2パッケージがインストールされていれば、PearのNet_IDNA2を使うことにより簡単に、Punycode<-->日本語の変換を行うことが可能です。
Pearにどのパッケージがインストールされているかを確認するには
> /usr/local/php/5.6/bin/pear list などと、パラメータとしてlistを指定すると表示することができます。

こんな感じで表示されます。

実際の使い方はこんな感じになります。

-PHP