0

page=2&を削除するためにできること :

"page=2&param1=value1&param2=value2" or
"param1=value1&page=2&param2=value2".

なる:

"param1=value1&param2=value2" or
"param1=value1&param2=value2".

page=2 の場合、2 は任意の自然数です。すなわち (0 から 32000)。

よろしく、

4

4 に答える 4

10

parse_strを使用して文字列を配列に解析し、配列からページを設定解除してから、http_build_queryを使用して結果を再構築できます。

コード例:

$str = 'page=2&param1=value1&param2=value2';
$arr = array();
parse_str($str, $arr);
unset($arr['page']);
echo http_build_query($arr);
于 2010-01-14T11:43:51.617 に答える
1
 $str = trim(preg_replace("/\bpage=\d+&?/", "", $str), "$");

正規表現:

\b        # Match a "boundary" point (start of new word)
page=     # Match 'page='
\d+       # Match 1 or more digits
&?        # Match a '&' if it exists

&外側のトリムにより、残っている可能性のある末尾が削除されます。

何かをトリミングしたい場合は、 を に置き換えて、\d+以外[^&]+の任意の文字に一致させることができます&

 $str = trim(preg_replace("/\bpage=[^&]+&?/", "", $str), "$");
于 2010-01-14T11:42:43.727 に答える
0

爆発を使用していますか?

$urlString = "page=2&param1=value1&param2=value2";
$arr = explode('&',$urlString);
print_r( $arr );
foreach( $arr as $var => $val ) {
    if( substr( $val, 0, 6 ) == 'param2' ) {
        unset( $arr[ $var ] );
    }
}
$urlString = implode('&',$arr);
于 2010-01-14T11:44:10.597 に答える
0

私の理解が正しければ、これで任意のページを削除できます (番号がわかっていれば):

function replacePage($querystring, $page = 1) {
    return str_replace('page='.$page.'&', '', $querystring);
} 

余談ですが、正規表現の使用は、回避できる場合、最適なコーディング方法ではありません。str_replaceそれらは遅いため、可能であればトークン化などの他の方法に置き換える必要があります。個人的には、preg_replace よりもはるかに高速に実行されるため、クエリ文字列から削除する必要があるページがわかっている場合は、私の方法を使用します。

于 2010-01-14T11:38:38.450 に答える