0

PHP preg_replace()を使用してURLからいくつかのパラメーターを削除しようとしています。たとえば、a[]=1 次のURLから削除する必要があります。

$my_url = 'www.myhost.com/filter.php?a[]=1&a[]=12&a[]=13&a[]=14'

だから私は使用しています:

$without_filter = preg_replace("/(&)?a\[\]=1/", '', $my_url);

だけを削除したいのですが、他のパラメーターからa[]=1含まれている部分を削除しているので、次のようになります。a[]=1

www.myhost.com/filter.php?234

誰かが私がこれを解決するのを手伝ってくれる?

4

3 に答える 3

3

どうですか:/a\[\]=1(&|\b)/

そうすれば、文字列のまたは末尾が後に続く場合にa[]=1 のみキャプチャされます。&

于 2013-01-29T19:20:55.587 に答える
1

preg_replaceのmanページに続いて、次のようなことを行うことができます。

$without_filter = preg_replace("/\&(a\[\]=1)(\&|$)/", '\2', $my_url);

または...いつでもpreg_replace_callbackを使用できます

于 2013-01-29T19:41:55.233 に答える
0

$limitのパラメータを使用してpreg_replaceに設定します1。これにより、1回だけ置き換える必要があります。パラメータが常にこのようにソートされていると仮定します。

$without_filter = preg_replace("/(&)?a\[\]=1/", '', $my_url, 1);
于 2013-01-29T19:22:22.333 に答える