すぐできたので、まとめてみた。
準備する。
libidn、libidn-devel をインストール
1
|
yum install libidn.x86_64 libidn-devel.x86_64
|
PHP IDNA Extension をインストール
1
2
3
4
5
6
7
|
wget http://www.xarg.org/download/idna-1.0.0.tar.gz
tar zxvf idna-1.0.0.tar.gz
cd idna-1.0.0
phpize
./configure
make
make install
|
ここにインストールされました
1
2
3
|
updatedb
locate idna.so
#=> /usr/lib64/php/modules/idna.so
|
php.ini に記述
1
2
3
4
|
vi /etc/php.ini
extension_dir = "/usr/lib64/php/modules" #追記
extension=idna.so #追記
/etc/init.d/httpd restart
|
試してみる
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<?php
function puny_ahref($puny,$uni)
{
echo "<a href='http://$puny.jp/'>$puny.jp</a><br />";
echo "<a href='http://$puny.jp/'>$uni.jp</a><br />";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>vps.ngsw.jp</title>
</head>
<body>
<h1>punycode変換</h1>
<form action="./punycode.php" method="post">
<p><input type="text" name="domain_JP" size="30">.jp</p>
<input type="submit" value="POST">
</form>
<?php
if (isset($_POST['domain_JP'])){
# $punycode = htmlspecialchars($_POST['domain_JP']);
$punycode = htmlspecialchars($_POST['domain_JP'] , ENT_QUOTES , 'UTF-8');
$punycode = idna_toASCII("$punycode");
$unicode = idna_toUnicode("$punycode");
puny_ahref($punycode,$unicode);
}
?>
</body>
</html>
|
これ
1
|
<input type="text" name="domain_JP" size="30">
|
の size=“30” はいくつにするのが妥当なんだろ。