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>';
  • 相关阅读:
    C++中int与string的相互转换【转】
    C# 获取文件名及扩展名【转】
    k8s查看容器日志---查看运行中指定pod以及指定pod中容器的日志
    shell字符串截取
    Kubernetes集群之清除集群
    Expect Command And How To Automate Shell Scripts Like Magic
    CentOS 7搭建本地yum源和局域网yum源
    使用MobaXterm配置ssh隧道(port forwarding)
    重置jenkins用户名密码
    Kubernetes之Taints与Tolerations 污点和容忍
  • 原文地址:https://www.cnblogs.com/php411161555/p/3897417.html
Copyright © 2011-2022 走看看