[PHP]: JavaScriptで「escape」された文字列をデコードする関数「unescape」

2008/07/22 15:42:47
カテゴリ:Web > PHP

と言いつつ、実はJavaScript、というよりActionScript関連です。

最近 Adobe Airの、とあるツールを作ってます。
ASは、Flashのオーサリング専門でやってる人間に任せてるんですが、
自分は彼の作ったAirアプリから、サーバーサイド(PHP)に送信されるデータの処理を担当してます。

で、そのAirアプリから送信されるデータの取り合いをXMLにしたんですが、
文字化け防止のために、エンコードして送ってくれました。
それ自体は問題ないんですが、何に変換してくれたかというと、JavaScriptにしかない「escape」関数を使ってくれました。 (やっぱりASの関数は、基本JavaScriptなんですよね。)

うぅ、PHPには「unescape」無いんだよー、「encodeURI」使って欲しかったよー、
つっても彼は本当にFlashしか知らないので、仕方がありません。
このままでどーにかならないものか、と調べてたら、ちゃんとデコーダを作ってくれた人が居ました。

「unescape(PHP)関数 Javascript版escape日本語POST対応」で紹介されてる、
PHPマニュアルの、「utf8_encode」のページの「User Contributed Notes」の中の1人 。

おぉ、すばらしい!
なんか、

文字列に"-"(ダッシュ)が含まれると、それ以降が抜けるらしい。

Lupin's Weblog: PHP: Javascriptのescapeに対応したunescape関数のバグ

というバグもあるらしいので、こちらも参照してみて下さい。

何にせよ助かりました。

使い方も簡単ですね。
記載されてるfunctionを定義して、

$str = unescape($str);

で、デコードされます。