本帖最后由 kwdpx 于 2012-09-27 10:17:28 编辑

解决方案 »

  1.   

    parse_url
    parse_str 这两个函数一起用,就能实现了。
    比正则处理得简单
      

  2.   

    <?php 
    $str = 'http://127.0.0.1/c/1.php?ft=x7cjhttp://127.0.0.1/c/1.php?form=post&ft=gy4ehttp://127.0.0.1/c/1.php?ft=7yd4r&form=post';
    $str = preg_replace('/[\?&]ft=\w+/','',$str);
    var_dump($str);
    ?>
      

  3.   

    还得用parse_url取得query值才可以知道GET传参判断如何替换?或&
      

  4.   

    <?php
    $tjurl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];$tjurl = preg_replace('/[\?&]ft=\w+/','',$tjurl);echo "$tjurl";
     exit;
    ?>这二个过滤成功了:
    http://127.0.0.1/c/1.php?ft=x7cjhttp://127.0.0.1/c/1.php?form=post&ft=gy4e
    这个没过滤成功:http://127.0.0.1/c/1.php?ft=7yd4r&form=post过滤成:http://127.0.0.1/c/1111.php&form=post应该过滤为:
    http://127.0.0.1/c/1.php?form=post
      

  5.   

     $arr=array(
    'http://127.0.0.1/c/1.php?ft=x7cj',
    'http://127.0.0.1/c/1.php?form=post&ft=gy4e',
    'http://127.0.0.1/c/1.php?ft=7yd4r&form=post'
    );print_r(array_map('foo',$arr));
    function foo($url){
       $ar=parse_url($url);   if(!isset($ar['query'])) return $url;
       
       parse_str($ar['query'],$arr);
       unset($arr['ft']);
       return $ar['scheme'].'://'.$ar['host'].$ar['path'].($arr ? '?'.http_build_query($arr) : '');
    }
    Array
    (
        [0] => http://127.0.0.1/c/1.php
        [1] => http://127.0.0.1/c/1.php?form=post
        [2] => http://127.0.0.1/c/1.php?form=post
    )
      

  6.   

    效果是好,但是整复杂了,我就想一行正则搞定,3楼的思路$str = preg_replace('/[\?&]ft=\w+/','',$str);是对的,只是还有一些错误:
    $tjurl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];得到当前网址,该网址有可能出现三种类型:
    有以下网址:http://127.0.0.1/c/1.php?ft=x7cj
    需过滤成:http://127.0.0.1/c/1.phphttp://127.0.0.1/c/1.php?form=post&ft=gy4e
    需过滤成:http://127.0.0.1/c/1.php?form=posthttp://127.0.0.1/c/1.php?ft=7yd4r&form=post
    需过滤成:http://127.0.0.1/c/1.php?form=post
     
    并不需要
    $arr=array(
    'http://127.0.0.1/c/1.php?ft=x7cj',
    'http://127.0.0.1/c/1.php?form=post&ft=gy4e',
    'http://127.0.0.1/c/1.php?ft=7yd4r&form=post'
    );
    仅需:
    $arr='http://127.0.0.1/c/1.php?ft=x7cj',
    或$arr='http://127.0.0.1/c/1.php?form=post&ft=gy4e',
    或$arr='http://127.0.0.1/c/1.php?ft=7yd4r&form=post'另外又想到还有一种格式:
    http://127.0.0.1/c/1.php?seed=add&ft=7yd4r&form=post
    也要过滤成
    http://127.0.0.1/c/1.php?seed=add&form=post
      

  7.   

    本帖最后由 xuzuning 于 2012-09-27 17:51:13 编辑