URLエンコード/デコードハマる話

 Webサービスを使ったプログラムをPHPでテスト中。検索語にスペースが入るとうまくパラメータを渡せていないようだ。ということで原因を探る。
 パラメータはURLエンコードされて渡される。スペースは「%20」に変換される。これをPHPで受け取って処理する際に変換すればよいかと考える。
 スペースは「+」に変換すればよい、とかいうのを読んだ気がしてたので、先の「%20」を「+」に正規表現の関数で文字列変換してやればいいと思ったのだがうまくいかず。だいたい「%20」を検出してないようだ。これに気づくのに30分。置換対象を「 」(スペース)にしたらうまくいった。
 PHPで受け取った状態では「%20」じゃなくって「 」になってるのだな。考えればなるほど、とか思うんだけれどもまったくわからなかった。
PHPポケットリファレンス と、こうして書いてる文章もたぶん用語がめちゃくちゃ。勘違いも多いと思われる。「実体参照」とかいうのも関係あるんだっけ? 参考書籍が1冊しかないからね。しかも斜め読みしかしてない。いいわけ。
 ところで、フィードメーターの表示がなんか違うのでクリックしてみると、「RSSフィード.cc公開記念キャンペーン」ってのをやってる。参加してみるか。

コメント