是否有一个PHP库来处理URL参数的添加,删除或替换?

nop*_*ole 2 php url-rewriting

当我们向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),所以我们不需要写它?

Ste*_*rig 9

使用组合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)