[PHP]: JavaScriptで「escape」された文字列をデコードする関数「unescape」
と言いつつ、実は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);
で、デコードされます。