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 $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>
$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>