【发布时间】:2013-05-11 04:00:32
【问题描述】:
使用 PHP,如何自动修复格式错误的 url,如下所示:
/db/?param1=sas23456sdfd¶m2=1368115104¶ma3=more/resource
or...
/db?param1=sas23456sdfd¶m2=1368115104¶ma3=more/resource
然后像这样重新排列成正确的顺序?:
/db/resource/?param1=sas23456sdfd¶m2=1368115104¶ma3=more
or...
/db/resource?param1=sas23456sdfd¶m2=1368115104¶ma3=more
在您问之前,格式错误的 url 的原因完全超出了我的控制,这是由坚持在原始查询字符串参数之后愚蠢地添加尾部斜杠和更多端点的客户端库引起的。幸运的是,我通过 PHP 反向代理脚本传递请求,因此可以想象我可以修复它。请注意:
- 查询字符串可能存在也可能不存在
- 有时可能会正确放置查询字符串
- 查询字符串参数名称和值会有所不同
- 查询字符串参数的数量可能会发生变化
- 查询字符串可能并不总是跟在“/”之后(db/?param=val 或 db?param=val)
- 格式错误的 URL 将始终具有“?param(s)=value/”模式
关于如何用 PHP 解决这个混乱的任何想法?
【问题讨论】:
-
有没有要求他们更换客户端库?我可以看到修补程序无济于事。
-
我希望.. 现在不是一个选项。
-
你可以使用 preg_split('/[\/ \?]/', $malformedURL);而不是使用一些逻辑来重新排列..
-
最好修复网址,而不是解决格式错误的症状。