function handleQueryStringParams($url, $newParams = array()) {
$urlParts = explode('?', $url);
$path = $urlParts[0];
$queryString = '';
if( count($urlParts) > 1 ) {
unset($urlParts[0]);
$queryString = implode('?', $urlParts);
}
foreach($newParams as $paramName => $paramValue) {
if($queryString) {
if(strpos($queryString, $paramName) === 0 || strpos($queryString, '&'.$paramName) === 0 || strpos($queryString, '&'.$paramName)) {
$queryString = preg_replace(array('#'.$paramName.'=[^&]*#', '#'.$paramName.'[\s]*$#'), "{$paramName}={$paramValue}", $queryString);
} else {
$queryString .= "&{$paramName}={$paramValue}";
}
} else {
$queryString .= "{$paramName}={$paramValue}";
}
}
$newUrl = $path;
if($queryString) {
$newUrl .= '?'.$queryString;
}
return $newUrl;
}
This function will make you able to modify and add the request parameters without duplicates.