2010-11-21 20 views
1

元の質問で展開するhere:クエリ文字列から複数の変数を削除したいと思います。クエリ文字列から値を削除するパート2

たとえば、クエリ文字列から変数bar1 & を削除したいとします。私は、次のコードを試してみました:

echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2","bar1"); 

をしかし、これは両方の変数だけbar2を削除しません。

助けてください。

は、私はあなたがそれので、それを変更することができ、parseQueryStringはあなたが定義した関数であると仮定していますので、あなたは、また

echo parseQueryString(parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],"bar2"),"bar1"); 

のようなものを望むことでしょう、

マット

答えて

2

をありがとう配列引数を受け取り、配列をループします。

+0

これは完璧に機能し、多くの感謝! – Matt

3

私は

  • parse_str($_SERVER["QUERY_STRING"], $array);

  • unset($array["bar1"]);

一緒に戻って、クエリ文字列を接着するために、不要な変数

  • http_build_query($array);を除去するためのクエリ文字列を離れて取るために使用します

  • +0

    あなたの答えをありがとう! – Matt

    1

    私は複数のパラメータで動作する新しい関数を作成しました。

    <?php 
    function parseQueryString($url,$remove_arr) { 
        $infos=parse_url($url); 
        $str=$infos["query"]; 
        $op = array(); 
        $pairs = explode("&", $str); 
        foreach ($pairs as $pair) { 
         list($k, $v) = array_map("urldecode", explode("=", $pair)); 
         $op[$k] = $v; 
        } 
        foreach($remove_arr as $remove){ 
         if(isset($op[$remove])){ 
          unset($op[$remove]); 
         } 
        } 
    
        return str_replace($str,http_build_query($op),$url); 
    
    } 
    echo parseQueryString("http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],array("bar2","bar1")); 
    ?> 
    
    +0

    これは素晴らしいです、また、ありがとう、非常にありがとう。 – Matt

    0

    私は私がすべてだと思うが、1つは結果から削除されるだろうparseQueryString機能は、&bar[]=5&bar[]=12等のアレイコンポーネントとクエリ文字列のために働くだろうとは思いません。

    +0

    ようこそStackOverflowへと投稿していただきありがとうございます。残念ながら、これは本当に質問に答えるものではありません。 [回答方法​​](http://stackoverflow.com/questions/how-to-answer)をご覧ください。 –

    関連する問題