-
Üyelik
29.09.2011
-
Yaş/Cinsiyet
39 / E
-
Meslek
öğrenci
-
Konum
Manisa
-
Ad Soyad
M** K**
-
Mesajlar
699
-
Beğeniler
61 / 126
-
Ticaret
1, (%100)
Aşağıda link üzerinde page sildirebiliyorum, fakat ikinci ve daha fazlasını sildirmek istediğimde array kullanmam gerekli bunu beceremedim. Mesela type ile birlikte pageyi sildirmek istiyorum.
$key = 'page';
$url = 'https://www.site.com/?type=product&page=5';
// Remove specific parameter from query string
$filteredURL = preg_replace('~(\?|&)'.$key.'=[^&]*~', '$1', $url);
echo $filteredURL; // Çıktısı 'https://www.site.com/?type=product
-
Üyelik
29.09.2011
-
Yaş/Cinsiyet
39 / E
-
Meslek
öğrenci
-
Konum
Manisa
-
Ad Soyad
M** K**
-
Mesajlar
699
-
Beğeniler
61 / 126
-
Ticaret
1, (%100)
Şu şekilde kullanıldığında tek parametreyi siliyor :
$key = 'page';
$url = 'https://www.site.com/?type=product&page=5';
// Remove specific parameter from query string
$filteredURL = preg_replace('~(\?|&)'.$key.'=[^&]*~', '$1', $url);
echo $filteredURL; // Çıktısı 'https://www.site.com/?type=product
fakat page ve type paremetrelerini birlikte silmek istediğimde çalışmıyor.
Yani şöyle birşey yapmak istiyorum fakat yemiyor :
$key = array('page','type');
$url = 'https://www.site.com/?type=product&page=5';
// Remove specific parameter from query string
$filteredURL = preg_replace('~(\?|&)'.$key.'=[^&]*~', '$1', $url);
echo $filteredURL; // Çıktısı 'https://www.site.com/?type=product
-
Üyelik
23.12.2018
-
Yaş/Cinsiyet
33 / E
-
Meslek
Bilgisayar Programcısı
-
Konum
Trabzon
-
Ad Soyad
F** A**
-
Mesajlar
3
-
Beğeniler
0 / 1
-
Ticaret
0, (%0)
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');
1 kişi bu mesajı beğendi.