如何将pid=11&action=save&468=a&468=b&468=c&468=d&469=a&469=b&450=b&450=c&450=d;
写成这样pid=11&action=save&468=abcd&469=ab&450=bcd;
什么方法都行!

解决方案 »

  1.   

    [code lang=php]
    $str="pid=11&action=save&468=a&468=b&468=c&468=d&469=a&469=b&450=b&450=c&450=d";
    $arr = explode('&',$str);
    $arr2=array();
    foreach($arr as $value){$tmp=explode('=',$value);$arr2[$tmp[0]].=$tmp[1];}
    foreach($arr2 as $k=>$v){$arr2[$k]=$k.'='.$v;}
    echo implode('&',$arr2);
    [/code]
      

  2.   

    我也来一个。$s='pid=11&action=save&468=a&468=b&468=c&468=d&469=a&469=b&450=b&450=c&450=d';
    $arr=explode('&',$s);
    $tem=array();
    foreach($arr as $v){
         $str=explode('=',$v); 
         if(!$tem[$str[0]]) $tem[$str[0]]=$v;
         else   $tem[$str[0]].=$str[1];
    }
    echo urldecode(implode('&',$tem)); 
      

  3.   

    纯正则是弄不出来的可以变通一下
    $s = 'pid=11&action=save&468=a&468=b&468=c&468=d&469=a&469=b&450=b&450=c&450=d';
    //pid=11&action=save&468=a&468=b&468=c&468=d&469=a&469=b&450=b&450=c&450=d
    //pid=11&action=save&468=abcd&469=ab&450=bcd;
    preg_match_all('/&\d+=/i',$s,$arr);
    $brr = array_unique($arr[0]);
    $out = $s;
    foreach($brr as $i => $v){
      $out = preg_replace("/$v/",'#',$out,1);
      $out = str_replace($v,'',$out);
      $out = str_replace('#',$v,$out);
    }
    echo $out ;
    输出: pid=11&action=save&468=abcd&469=ab&450=bcd