当我们向URL添加一个参数时
$ redirectURL = $ printPageURL."?模式= 1";
如果$ printPageURL是" http://www.somesite.com/print.php ",但是如果$ printPageURL在全局文件中更改为" http://www.somesite.com/print.php?newUser= 1 ",然后URL变得糟糕.如果项目有300个文件,并且有30个文件以这种方式附加param,我们需要更改所有30个文件.
如果我们追加使用"及模式= 1"和$ printPageURL变化从"同一http://www.somesite.com/print.php?new=1 "到" http://www.somesite.com/print.php ",那么网址也很糟糕.
PHP中有一个库会自动处理"?" 和"&",甚至检查现有的param是否已经存在并删除了那个,因为它将被后者替换,如果URL继续增长,那就不好了?
更新:几个有用的答案,似乎没有预先存在的函数addParam($ url,$ newParam),所以我们不需要写它?
使用组合parse_url()来爆炸URL,parse_str()爆炸查询字符串并http_build_query()重建查询字符串.之后,您可以从原始片段parse_url()和您构建的新查询字符串重建整个URL http_build_query().随着查询字符串被分解为关联数组(键值对),修改查询就像在PHP中修改数组一样简单.
编辑
$query = parse_url('http://www.somesite.com/print.php?mode=1&newUser=1', PHP_URL_QUERY);
// $query = "mode=1&newUser=1"
$params = array();
parse_str($query, $params);
/*
* $params = array(
* 'mode' => '1'
* 'newUser' => '1'
* )
*/
unset($params['newUser']);
$params['mode'] = 2;
$params['done'] = 1;
$query = http_build_query($params);
// $query = "mode=2&done=1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |