いくつかの値を持つ長いURLがあります。
例1:
http://www.domain.com/list?seach_type[]=0&search_period[]=1&search_min=3000&search_max=21000&search_area=6855%3B7470%3B7700%3B7730%3B7741%3B7742%3B7752%3B7755%3B7760%3B7770%3B7800%3B7840%3B7850%3B7860%3B7870%3B7884%3B7900%3B7950%3B7960%3B7970%3B7980%3B7990%3B8620%3B8643%3B8800%3B8830%3B8831%3B8832%3B8840%3B8850%3B8860%3B8881%3B9620%3B9631%3B9632
私の変数検索領域には4桁の数字(例4000、5000)しか含まれていませんが、多くの数字を含めることができます。現在、;
を区切り記号として使用して、これらをURLで区切ります。例1に見られるように、; %3B
に変換されます。これは、これは使用するのに悪い記号であると私に信じさせます。
最高のURLセパレーターは何ですか?
さて、 RFC1738 によると、有効なURLには文字のみを含めることができます a-z、プラス記号(+)、ピリオドとハイフン(-)。
一般的に私はあなたの検索領域を区切るためにプラスで行きます。したがって、URLは http://www.domain.com/list?seach_type=0&search_period=1&search_min=3000&search_max=21000&search_area=6855+7470+7700+ ...になります。
-編集-
GinoAが指摘したように、私はその文書を読み間違えました。したがって、「$-_.+!*'(),
」も有効な文字です。私はまだ+記号で行きます。
Moontear、あなたは リンクされたドキュメント を読み間違えたと思います。この制限は、URLの「スキーム」部分にのみ適用されます。 WWW URLの場合、それは「http」です。
ドキュメントの次のセクションでは、次のように述べています。
したがって、英数字、特殊文字「$ -_。+!* '()」、および予約目的で使用される予約文字のみを、URL内でエンコードせずに使用できます。
個人的にはコンマ(、)を使います。ただし、プラス(+)とダッシュ(-)はどちらも妥当なオプションです。
ところで、そのドキュメントには、セミコロン(;)が一部のスキームで予約されていることも記載されています。
分離する数値しかない場合は、セパレータの選択肢が豊富です。たとえば、任意の文字を選択できます。
おそらくスペースは良い選択かもしれません。 URLで+
文字に変換されるため、文字よりも読みやすくなります。
例:search_area=4000+5000+6000
content-typeがapplication/x-www-form-urlencoded(HTMLフォームの標準)の場合、「+」はスペース「」として解釈されます。これは、サーバーソフトウェアによって処理される場合があります。
私は「!」が好きです。 URLエンコードされません(少なくともChromeでは)。通常の場合、実空間文字として使用するために「+」が予約されています。
私はパーティーに非常に遅れていますが、有効なクエリ文字列は変数を繰り返すことができるので、代わりに...
http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855+7470+7700
...あなたも使うことができます...
http://x.y.z/list?type=0&period=1&min=3000&max=21000&area=6855&area=7470&area=7700