1

URL からクエリ文字列を削除しようとしていますが、最初のキー/変数をそのままにしておく必要があります。したがって、アンパサンドの最初の出現が、クエリ文字列を破棄したいポイントであることを知っています。これを行う最善の方法は何ですか?以下は私のコードです。現在、クエリ文字列に追加し続けています。

<a href="<?php echo $_SERVER["REQUEST_URI"] ?>&sortkey=year&sortval=asc">
4

4 に答える 4

2

最初のアンパサンドに到達するまで、アンパサンド以外のすべてを単純に照合できます。例えば

$incomingURI = 'http://www.example.com/?id=12&left=right&up=down';
preg_match('/[^&]+/', $incomingURI, $match);
$outgoingURI = $match[0];

上記のコードは、変数 $outgoingURI に以下を出力します。

http://www.example.com/?id=12

これは、preg_replace を使用するよりもはるかに高速です。

于 2012-04-24T11:07:17.910 に答える
1

strpos関数を使用して、アンパサンドの位置を見つけます。次に、substr関数を使用して、その時点までのURLの一部を取得します。

于 2012-04-24T10:37:46.770 に答える
1

私があなたの質問を正しく理解していれば、最初に出現したアンパサンド以降のすべてを削除してください。次のようなものを使用できます。

<?php
$uri = 'blah.blah.com?a=b&sortkey=year&sortval=asc';
$new_uri = preg_replace("/([^&]+)&(.*)/", "$1", $uri)
?>

パターン:

([^&]+) : Match everything except '&'
&       : First '&'
(.*)    : Any thing after that

最初のグループ ( ) に置き換えられます。$1これは、 が最初に出現する前のものです&

于 2012-04-24T10:45:15.020 に答える
0

strposは機能しますが、RewriteRuleを使用していない限り、$ _SERVER['SCRIPT_NAME']または$_SERVER['PHP_SELF']で十分です(おそらくより効率的です)。

URLが書き換えられている場合は、$ _SERVER['REDIRECT_URL']の方が適切です。

編集:クエリ文字列の最初の部分を保持することについてのビットを逃しました:s

于 2012-04-24T10:43:47.733 に答える