分隔网址中的值,而不是&

时间:2010-09-17 20:10:56

标签: html parsing url parameters urlencode

网址中的每个参数都可以包含多个值。我该如何分开它们?这是一个例子:

http://www.example.com/search?queries=cars,phones

所以我想搜索两种不同的东西:汽车和手机(这只是一个人为的例子)。问题是分隔符,一个逗号。用户可以在搜索表单中输入逗号作为查询的一部分,然后这会搞砸。我可以有2个单独的URL参数:

http://www.example.com/login?name1=harry&name2=bob

那里没有真正的问题,实际上我认为这就是设计URL来处理这种情况的方法。但我不能在我的特殊情况下使用它。需要一个单独的长帖来说明原因......我需要简单地分离值。

我的问题基本上是,是否有一个URL可编码的字符或值,不能以表格(textarea或输入)输入,我可以用作分隔符?像空字符?还是一个不可见的角色?

更新:谢谢大家的快速回复。我也应该列出相同的参数名称示例,但在我的情况下,顺序也很重要,因此也不是一个选项。我们通过使用%00 URL编码字符(UTF-8 \ u0000)作为值分隔符来解决此问题。

6 个答案:

答案 0 :(得分:13)

标准方法是两次使用相同的密钥名称。

http://www.example.com/search?queries=cars&queries=phones

大多数表单库都允许您自动将其作为数组访问。 (如果您正在使用PHP(并使用$_POST/GET而不是重新发明轮子),则需要将名称更改为queries[]。)

答案 1 :(得分:2)

您可以为每个相同的参数名称。

http://www.example.com/search?query=cars&query=phones

平均服务器端HTTP API能够将它们作为数组获取。根据您的问题历史,您正在使用JSP / Servlet,因此您可以使用HttpServletRequest#getParameterValues()

String[] queries = request.getParameterValues("query");

答案 2 :(得分:2)

只需对用户输入进行网址编码,使其逗号变为%2C

答案 3 :(得分:1)

想出你不太可能在查询中输入的自己的分隔符。例如,两个下划线'__'

答案 4 :(得分:1)

为什么不做“||”之类的事情呢?任何进入搜索区域的人都可能在键盘上睡着了:}然后只是在后端爆炸。

答案 5 :(得分:0)

最简单的方法是使用自定义分隔符,如[!! ValSep !!]。