□PHP5.3(以降)でPunycode対応
最近日本語ドメインが話題になってきましたので、PHPスクリプト上でもPunycode変換してからアクセスしてみるのもいいかもしれない、と思ったのが運のつき。
試行錯誤で半日使ってしまった。
検索すると情報が少ない。
いろいろあるけど、icuとかintl関連のパッケージをインストール
apt-get install libicu
apt-get install libicu-devel
apt-get install intltool
pecl install intl
…としてもVine5では肝心のintlが入らない。
とはいえ、lib関連はいるのでコレはコレで大事。
仕方がなしにウロウロすると、
こんなところで
http://php-idn.bayour.com/php-idn_1.2b.tar.gz
こんなのを発見。
試行錯誤の末、これを使えばいいらしい。
mkdir /usr/src/package
cd /usr/src/package
wget http://php-idn.bayour.com/php-idn_1.2b.tar.gz
cd /usr/src/
tar xvzf package/php-idn_1.2b.tar.gz
cd idn-1.2b/
phpize
./configure
make
make install
とする。make testしても100%エラーとなるけど無視。
で、
<?
??? $URL = ‘http://日本語ドメイン.jp/’;
?
?$URLINFO = parse_url($URL);
//?print_r($URLINFO);
?print $URLINFO[‘host’];
??? print ” -> “;
?print preg_replace(‘/’.$URLINFO[‘host’].’/’, idn_to_ascii($URLINFO[‘host’]), $URL);
?>
という感じで実行すると、
http://日本語ドメイン.jp/ -> http://xn--eckwd4c7c5976acvb2w6i.jp/
とできたのでよしとする。
…あ、WordPressの投稿編集画面は日本語URLのlink変換に対応してないのか。