ホームページ >バックエンド開発 >PHPチュートリアル >URL内のパラメータをPHPで通常フィルタリングする方法、書き方

URL内のパラメータをPHPで通常フィルタリングする方法、書き方

WBOY
WBOYオリジナル
2016-06-13 13:09:31900ブラウズ

PHPはURL内のパラメータを定期的にフィルタリングします。その書き方を教えてください。
次の URL があります:

http://127.0.0.1/c/1.php?ft=x7cj
次のようにフィルタリングする必要があります: http://127.0.0.1/c/ 1.php

http://127.0.0.1/c/1.php?form=post&ft=gy4e
次のようにフィルタリングする必要があります: http://127.0.0.1/c/1.php ?form=post

http://127.0.0.1/c/1.php?ft=7yd4r&form=post
http://127.0.0.1/c/1 にフィルタリングする必要があります。 php?form=post



たとえば、上記 3 つの形式の URL を使用して次の php ファイルを開いた場合、正規表現を使用してフィルタリングされた効果を出力するにはどうすればよいでしょうか?

$tjurl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//通常の 1 文の使用方法上記の 3 つの形式で URL をフィルタリングしますか? URL のパラメータ「ft=*****」の ***** は固定の文字や数字ではなく、ランダムに変化する

echo "$tjuurl";
exit; です。
?>

-----解決策---------

PHP コード
<?php
$str = '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';
$str = preg_replace('/[?&]ft=w+/','',$str);
var_dump($str);
?>
<br><font color="#e78608">------解決策---------</font><br>
PHP コード
 $arr=配列(
'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));
関数 foo($url){
   $ar=parse_url($url);

   if(!isset($ar['query'])) $url を返します。
   
   parse_str($ar['query'],$arr);
   unset($arr['ft']);
   return $ar['scheme'].'://'.$ar['host'].$ar['path'].($arr ? '?'.http_build_query($arr) : '');
}
<br><font color="#e78608">------解決策------------------</font><br>
次のように書きます (先頭をテストするために最後の $s をコメントアウトします)<br>$s = 'http://127.0.0.1/c/1.php?seed=add&ft=7yd4r&form=post';<br>$s = 'http://127.0.0.1/c/1.php?ft=x7cj';<br>$s = 'http://127.0.0.1/c/1.php?form=post&ft=gy4e';<br>$s = 'http://127.0.0.1/c/1.php?ft=7yd4r&form=post';<br><br><strong>echo preg_replace('/([?&])ft=[ ^ &]+(&?)/e', '"$2"==""?"":"$1"', $s);</strong><br><br>配列をあげますが、 <div class="clear"> をテストしやすくするためです。</div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。