En acemi şekilde kodlayıp anlatmaya çalıştım. Umarım işine yarar


$url = 'https://www.site.com/?type=product&category=5&page=3&order_by=id&order=desc';

function clearParams($url, $strParams){
// $strParams ile gönderilen değerleri parçala
$items = explode(',', $strParams);

// $url i /? den öncesi ve sonrası olarak 2 parça yap
list($rootUrl, $query) = explode('/?', $url);

// type=product&category=5&page=3&order_by=id&order=desc her parçayı & den ayır ve diziye aktar
$urlParamsStr = explode('&', $query);

// Daha sonra birleştirmek adına kalan değerleri toplayacak dizi
$urlParams = array();

// type=product category=5 page=3 order_by=id order=desc tümünü tek tek dön
foreach ($urlParamsStr as $param) {

// type=product bu parçaları = den ayır ve type product şeklinde al
list($key, $val) = explode('=', $param);

// sıradaki değer örneğin "product" anahtarı $items içinde yok ise daha sonra birleştirilmek üzere $urlParams içine ekle
if(!in_array($key, $items)){

// Silinmeyecek olanları $urlParams dizisine key=val şeklinde ekle ör: type=product
$urlParams[] = $key.'='.$val;
}
}

// Silinmeyecek olan parametreleri örneğin "type=product", "page=3" gibi kalanları aralarına & ekleyerek birleştir
$newQuery = implode('&', $urlParams);

// "https://www.site.com" ile "key=val&key2=val2" değerleri aralarına /? ekleyerek birleştir ve sonucu çıkart
return $rootUrl.'/?'.$newQuery;
}

echo clearParams($url, 'category,order_by');




Temiz Kod

function clearParams($url, $strParams){

$items = explode(',', $strParams);
list($rootUrl, $query) = explode('/?', $url);
$urlParamsStr = explode('&', $query);
$urlParams = array();

foreach ($urlParamsStr as $param) {

list($key, $val) = explode('=', $param);
if(!in_array($key, $items)){
$urlParams[] = $key.'='.$val;
}

}

$newQuery = implode('&', $urlParams);

return $rootUrl.'/?'.$newQuery;
}



Kullanımı

$newUrl = clearParams("https://www.site.com/?type=product&category=5&page=3&order_by=id&order=desc", 'category,order_by');