phpとPEARを使い日本語URLをエンコードやデコードしてみる

前回まででPunycode変換を使う環境が整いましたので、実際に変換する方法を説明します。

環境が設定できていない場合は前のページを参考にして、環境の設定をしておいてください。

phpでREARを参照できるようしないとNet_IDNA2を使用できませんので…。

ではNet_IDNA2を使いドメイン部分用のPunycode変換する方法を説明します。



Punycode変換する方法

<?php
ini_set('include_path','.:/home/*******/pear/PEAR');
require_once "Net/IDNA2.php";

$net_idna2=Net_IDNA2::getInstance();
print $net_idna2->encode("日本語URL変換");
?>

■Net_IDNA2::getInstance();

返り値はNet_IDNA2のインスタンスです。
この返り値を使う事でPunycodeのエンコードやデコードが出来ます。

■インスタンス->encode(変換する文字列);

返り値は「変換する文字列」をPunycodeに変換された文字列です。

この例では「日本語URL変換」が「xn--urss5wyrbnwbk91huk3jgbaxa」に変換されます。

そしてPunycodeは可逆変換なのでエンコード(変換)した文字列をデコード(戻す)が出来ます。

<?php
ini_set('include_path','.:/home/*******/pear/PEAR');
require_once "Net/IDNA2.php";

$net_idna2=Net_IDNA2::getInstance();
print $net_idna2->decode("xn--urss5wyrbnwbk91huk3jgbaxa");
?>

■インスタンス->decode(戻す文字列);

返り値は「戻す文字列」をPunycodeから戻された文字列です。

この例では「xn--urss5wyrbnwbk91huk3jgbaxa」が「日本語URL変換」に変換されます。

これらの関数はドメイン部分用のPunycode変換です。
URLのそれ以外の部分はphpが持つpercent encodingする関数を使います。

ちょっとPunycode変換とは離れますがフォームに入れらたデータを
変換するのに使えるので説明します。

<?php
print rawurlencode("日本語URL変換");
?>

■rawurlencode(“変換する文字列”);

返り値は「変換する文字列」をpercent encodingされた文字列です。

この例では「日本語URL変換」が「%E6%97%A5%E6%9C%AC%E8%AA%9E%EF%BC%B5%EF%BC%B2%EF%BC%AC%E5%A4%89%E6%8F%9B」に変換されます。

<?php
print rawurldecode("%E6%97%A5%E6%9C%AC%E8%AA%9E%EF%BC%B5%EF%BC%B2%EF%BC%AC%E5%A4%89%E6%8F%9B");
?>

■rawurldecode(“変換する文字列”);

返り値は「変換する文字列」をpercent decodingされた文字列です。

この例では「%E6%97%A5%E6%9C%AC%E8%AA%9E%EF%BC%B5%EF%BC%B2%EF%BC%AC%E5%A4%89%E6%8F%9B」が「日本語URL変換」に変換されます。

これらの関数を使えばURLを変換できます。
しかし個別で変換する事は出来ますが面倒ですのでフォームを作ります。

と、いうわけで次回はフォームを使いスムーズに変換できるようにします。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする

関連記事



スポンサーリンク