【发布时间】:2010-11-03 21:58:12
【问题描述】:
我收到一个查询字符串(来自一个糟糕的支付系统,我不想公开其名称),其中包含未编码的 & 符号
name=joe+jones&company=abercrombie&fitch&other=no
parse_str 无法处理这个问题,而且我对正则表达式的了解还不够,无法提出自己的方案(尽管我确实尝试过)。我的挂断是前瞻正则表达式,我不太明白。
我在寻找什么:
Array
(
[name] => joe jones
[company] => abercrombie&fitch
[other] => no
)
我想过遍历字符串,一个接一个的 & 符号,但这似乎很愚蠢。帮忙?
【问题讨论】:
-
密钥(姓名、公司等)是否可预测/固定?
-
密钥是用户生成的且不可预测的:(
-
那么几乎没有办法......除非你可以说一个“空”值(如果你把它解析为一个有效的查询字符串)100%肯定不会发生(只是循环
parse_str的结果如果当前键的值为空字符串,则将当前键添加到前一个值。 -
这是一个可怕的错误。如果您必须使用执行此操作的系统,并且开发人员不准备修复它,那么您应该发出很多响亮的抱怨声。不应允许开发人员摆脱这种错误。
标签: php regex parsing query-string ampersand