page=2&を削除するためにできること :
"page=2¶m1=value1¶m2=value2" or
"param1=value1&page=2¶m2=value2".
なる:
"param1=value1¶m2=value2" or
"param1=value1¶m2=value2".
page=2 の場合、2 は任意の自然数です。すなわち (0 から 32000)。
よろしく、
page=2&を削除するためにできること :
"page=2¶m1=value1¶m2=value2" or
"param1=value1&page=2¶m2=value2".
なる:
"param1=value1¶m2=value2" or
"param1=value1¶m2=value2".
page=2 の場合、2 は任意の自然数です。すなわち (0 から 32000)。
よろしく、
parse_strを使用して文字列を配列に解析し、配列からページを設定解除してから、http_build_queryを使用して結果を再構築できます。
コード例:
$str = 'page=2¶m1=value1¶m2=value2';
$arr = array();
parse_str($str, $arr);
unset($arr['page']);
echo http_build_query($arr);
$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), "$");
爆発を使用していますか?
$urlString = "page=2¶m1=value1¶m2=value2";
$arr = explode('&',$urlString);
print_r( $arr );
foreach( $arr as $var => $val ) {
if( substr( $val, 0, 6 ) == 'param2' ) {
unset( $arr[ $var ] );
}
}
$urlString = implode('&',$arr);
私の理解が正しければ、これで任意のページを削除できます (番号がわかっていれば):
function replacePage($querystring, $page = 1) {
return str_replace('page='.$page.'&', '', $querystring);
}
余談ですが、正規表現の使用は、回避できる場合、最適なコーディング方法ではありません。str_replace
それらは遅いため、可能であればトークン化などの他の方法に置き換える必要があります。個人的には、preg_replace よりもはるかに高速に実行されるため、クエリ文字列から削除する必要があるページがわかっている場合は、私の方法を使用します。