【PHP】URLからパラメータを全て削除する方法5選

【PHP】URLからパラメータを全て削除する方法5選

strtok()

?で分割。

$url = 'https://example.com/?test=123';
$url = strtok( $url, '?' );
echo $url; // https://example.com/

explode()

?で区切って配列にしてから取り出す。

$url = 'https://example.com/?test=123';
$url = explode( '?', $url );
echo $url[0]; // https://example.com/

preg_replace()

正規表現で?以降を空文字で置換削除。

$url = 'https://example.com/?test=123';
$url = preg_replace( '/\?.+$/', '', $url );
echo $url; // https://example.com/

parse_url()

URLを一旦パースしてからパラメータ以外を結合。

$url = 'https://example.com/?test=123';
$url = parse_url( $url );
$url = $url['scheme'] . '://' . $url['host'] . $url['path'];
echo $url; // https://example.com/

preg_match()

正規表現で?より前の部分を取り出す。

$url = 'https://example.com/?test=123';
preg_match( '/(.+)\?/', $url, $matches );
echo $matches[1]; // https://example.com/

速度ランキング

上記のコードを100万回ループさせた場合の処理時間です。

1位 strtok() 2.498sec
2位 explode() 2.692sec
3位 preg_replace() 3.094sec
4位 parse_url() 3.442sec
5位 preg_match() 3.716sec

まとめ

strtok()が短く書ける上に速度も速いのでオススメ。
複数のパラメータから一部を削除するならparse_url()を使うと良さそうです。