ヤバい!
よくわからないまま他のサイトのブックマークレットから類推してテキトーに作ってたいせいだ!
javascript:window.location='http://bitly.oshiire.org/?bm='+escape(location.href);
escapeを使っていたので変換元のURLに含まれる「&」がエンコードされていなかった。そのため変換元のURLに「&」が含まれた場合、「&」以降のパラメータがずべて消えてしまっていた。すまぬ…すまぬ…
「?bm=」とあるように、php側では$_GET[‘bm’]でURLを受け取っている。しかし「&」がエンコードされていないと、例えば http://example.com?a=1&b=2 というURLを送信した場合は「http://bitly.oshiire.org/?bm=http%3Aexample.com?a=1&b=2」となる。つまり「?bm=」すなわち$_GET[‘bm’]に入るのは「http%3Aexample.com?a=1」までで、「&」で区切られてたのちに続く「b=2」は$_GET[‘b’]に入ってしまう。
escapeではなくencodeURIを使っても、やはり「&」はエンコードされないようだ。
んで結局 encodeURIComponent というのを使えば大丈夫っぽい。ちゃんと「%26」へ変換してくれたので受け取れた。
いやいやいや~参ったね。近日予定のサイト更新時に新しいブックマークレットを表示します。