escape を入れているので大丈夫だと思っていたのだが、なぜかPHPで送信したPOSTの要素を参照するとそこでプログラムが止まってしまう。原因は送信前に行っていたescape にあり、ここで利用しなければならないのはescape ではなくencodeURI だった。encodeURI は& が変換対象に含まれないのは有名なところなので、以下のような処理を実行しPOSTに加えるようにしたところ、正常にサーバーサイドでも動作するようになった。
(xhtmlにはあらかじめ送信したい文字列が格納されている)
xhtml=encodeURI(xhtml).replace(/&/g , "%26") /&/g は正規表現と呼ばれるパターンマッチ文になり、「文字列中に含まれているすべての&を対象とする」という意味を示す。 |
javascript >