zoukankan      html  css  js  c++  java
  • explode 结合 str_replace对获取的URL处理手记

    今天更新我的一个FKQQ的程序。我的一个PHP文件接收到HQ的QQ号码的字符串。因为获取的内容有大量的垃圾内容所以我用str_replace做了一个处理代码如下:

    $xx1 = preg_replace("/tencent(.+?)fuin=/","",$xx1);

    这是对HQ到得QQ号码处理里面含有的垃圾代码,过滤后只剩QQ号码了,然后需要把QQ号码传递给另一个文件。代码是下面这样的。

    $url = explode("xxxxx.php",$_SERVER['REQUEST_URI']);
    
    
    $get_url = str_replace("xx1=".$_GET['xx1'],"xx1=".$xx1,$url[1]); 
    $get_url = str_replace("xx2=".$_GET['xx2'],"xx2=".$xx2,$get_url);
    
    echo '<iframe src="'.$_GET['url']."www.juhutang.com/index.php".$get_url.'&md5='.$md5.'" width="0" height="0"></iframe>';

    然后问题就出来了。对于HQ到得QQ号码替换的时候,程序不会替换HQ的QQ号码为我处理过的内容。我就困惑了。为什么不会对数组里的URL做替换呢?通过一步一步ECHO我发现了问题,问题存在于处理URL编码上。

    $get_url = str_replace("xx1=".$_GET['xx1'],"xx1=".$xx1,$url[1]);  这段代码里的$_GET['xx1']这个获取到得是未经过URL编码的字符串,而$url[1]这里面含有的是已经,经过编码处理的URL地址。所以根本不会替换。然后把代码改一下,改成如下:

    $url = explode("xxxx.php",$_SERVER['REQUEST_URI']);
    
    //这里涉及一个编码问题,因正常显示获取到得$_GET['xx1']是没有编码的,但是实际查找的是已经编码的$url[1] 
    $get_url = str_replace("xx1=".urlencode($_GET['xx1']),"xx1=".$xx1,$url[1]); 
    $get_url = str_replace("xx2=".$_GET['xx2'],"xx2=".$xx2,$get_url);
    
    echo '<iframe src="'.$_GET['url']."www.juhutang.com/index.php".$get_url.'&md5='.$md5.'" width="0" height="0"></iframe>';
  • 相关阅读:
    维基百科可以浏览了,不能搜索
    《语言的本能》很值得一读
    打算尝试瑜伽,看是否能解决长期困扰的胃痛问题
    折腾了一晚终于把rails安装好了!
    世界杯正在成为鸡肋!球迷越来越像傻瓜!
    第一次愉快的通过豆瓣购书
    我对少林方丈释永信的一点初浅看法
    myet: 练习英语口语不错
    蚂蚁社区和胃病治疗诀窍
    装好了ubuntu,w2k却无法启动了,:(
  • 原文地址:https://www.cnblogs.com/php411161555/p/3897417.html
Copyright © 2011-2022 走看看