0

友人、私は現在、以下functionを使用しencodeてデータを送信し、GETメソッドを介して送信しています...ajax送信とphp受信に使用しています...

function urlencode(a){
     a=encodeURIComponent(a);
     a=a.replace(/\\/g,'%5C');
     a=a.replace(/!/g,'%21');
     a=a.replace(/'/g,'%27');
     a=a.replace(/\(/g,'%28');
     a=a.replace(/\)/g,'%29');
     a=a.replace(/\*/g,'%2A');
     a=a.replace(/~/g,'%7E');
     a=a.replace(/%20/g,'+');
     a=a.replace(/%26amp%3B/gi,'%26');
     a=a.replace(/%26lt%3B/gi,'%3C');
     a=a.replace(/%26gt%3B/gi,'%3E');
     a=a.replace(/%26nbsp%3B/gi,'%C2%A0');
     return a;
}

文字列を に渡した後、encodeURIComponent()追加replace()のメソッドを使用して、関数がリンクの文字列を次のようにエンコードするようにしましたphp...

今私の質問は、誰かが同じことを行うためのより短い、または簡単な代替方法を知っていますか...

この質問は学習目的でのみ行います... jQueryは使用しないでください...

4

2 に答える 2

0

escape()代わりにencodeURIComponent使用すると、使用している replace() の少なくとも一部が削除されます。例えば:

function urlencode(a){
 return escape(a);
   .replace(/\*/g,'%2A');
   .replace(/%20/g,'+');
   .replace(/%26amp%3B/gi,'%26');
   .replace(/%26lt%3B/gi,'%3C');
   .replace(/%26gt%3B/gi,'%3E');
   .replace(/%26nbsp%3B/gi,'%C2%A0');
}
于 2012-11-25T14:22:59.690 に答える
0

JS から PHP に GET リクエストを送信する場合は、次を使用する必要があります。

  • encodeURIComponent()、各パラメーターについて、javascript 側
  • PHP 側には何もありません ( $_GETは既にurldecode()d であるため、リンクされたドキュメントのメモ セクションを読んでください)。

PHP で URL エンコードする必要がある場合はurlencode()、対応する との互換性が保証されている を使用してurldecode()ください。

「自分で」それを行う方法を学びたい場合は、対応するライブラリのソースコードを読んで、シナリオを見逃さないようにしてください...通常、ライブラリ関数を再実装することはお勧めできません。

于 2012-11-25T15:33:39.943 に答える