【发布时间】:2015-01-29 17:44:49
【问题描述】:
如果我有如下查询字符串:
?key1=val1&key2==val2
应该如何解析?
喜欢:
key : key2=
value : val2
或
key : key2
value : =val2
在这种情况下,关键和价值是什么?
这是否允许在查询字符串中有 == 序列?
那么下面的查询字符串呢?
?key=val&=====
语法正确吗?
谢谢
【问题讨论】:
-
我认为在实践中这将取决于你想用它们做什么。
-
我从未尝试过,但我认为如果你尝试阅读
key2,你会得到=vale2。 -
我不知道语法规则,但我绝对不建议这样做。你想完成什么?
-
从 PHP 实现来看(SAPI.treat_data,
parse_str和内部参数解析都使用),=符号始终被视为分隔键和值的符号,系统-级别分隔符(通常为&)用于分隔对。所以在第一种情况下,key2将是键,=val2将是值。在第二种情况下,=====的最后一系列将被忽略,因为那里没有提取密钥。 -
但是,我不确定所有查询解析器实现是否都遵循相同的例程。这取决于实施,因为 w3 只提供了如何构建查询字符串的建议 (source)。
标签: http query-string