2016-04-04 11 views
1

私はthatsパラメータが配列であることを知っています。それは次のようになります。php unset url parameters配列

&fq[]=subjects:Human+beings&fq[]=subjects:Ethnology 

私は通常、この関数を使用してそれを送信パラメータの設定を解除するためにwan't時:

<a href="<?php echo remove_modify_url(array('fq' => urlencode($facetValue)));?>"><?php echo $facetValue; ?></a> 

function remove_modify_url($par, $url = FALSE){ 
if($url == FALSE){ 
    $scheme = $_SERVER['SERVER_PORT'] == 80 ? 'http' : 'https'; 
    $url = $scheme.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
} 
$url_array = parse_url($url); 
if(!empty($url_array['query'])){ 
    parse_str($url_array['query'], $query_array); 
    foreach ($par as $key => $value) { 
      unset($query_array[$key]); 
    } 
} 
return $url_array['path'].'?'.http_build_query($query_array); 
} 

はしかし、これはFQの鍵を持っているすべての設定が解除されます。私は、他のすべてのパラメータを削除せずに、特定の配列パラメータを設定解除したいと思います。この場合、ユーザはaボタンをクリックして件名を削除します。ヒューマン+存在とfq [] =件名:Ethnologyへのurl変更。

答えて

0

うまくいけば私は正しく従っていますが、私は$_GET配列を使用しています。ものが一致していない取得する

$params = $_GET; 
$delete = 'subjects:Ethnology'; 

unset($params['fq'][array_search($delete, $params['fq'])]);  
echo http_build_query($params); 

またはpreg_grep():いずれかの方法array_search()unset()のものを見つけることができます。たった1つのみの過度の攻撃ですが、より柔軟な検索:

$params['fq'] = preg_grep("/$delete/", $params['fq'], PREG_GREP_INVERT); 
echo http_build_query($params); 
+0

パーフェクトです。私はunset($ params ['fq'] [array_search($ delete、$ params ["fq")])のようにunset行を調整しなければなりませんでした。そうでなければそれは期待通りに働いた。ありがとう! –