explode結合str_replace取得したURL処理手記

3485 ワード

今日私の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['xx 1']という取得された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>';