ホームページ > バックエンド開発 > PHPチュートリアル > PHP で URL からクエリ文字列を効率的に削除するにはどうすればよいですか?

PHP で URL からクエリ文字列を効率的に削除するにはどうすればよいですか?

DDD
リリース: 2024-12-04 18:14:12
オリジナル
173 人が閲覧しました

How Can I Efficiently Remove Query Strings from URLs in PHP?

クエリ文字列を使用しない URL の取得

PHP を使用して現在のページの URL を構築する場合、要求された URL にクエリ文字列 (例:

www.example.com/myurl.html?unwantedthngs
ログイン後にコピー

) クエリ文字列を削除してクリーンな URL を取得するには例:

www.example.com/myurl.html
ログイン後にコピー

多用途の strtok 関数を利用できます。

$url = strtok($_SERVER["REQUEST_URI"], '?');
ログイン後にコピー

strtok() は、最初に ? が出現する前の URL の部分を抽出する簡単な方法を提供します。キャラクター。最大 2 つの要素を含む配列を作成して最初の要素を抽出する必要があるexplode() とは対照的に、strtok() はより直接的なアプローチです。

strstr() やsubstr() を使用すると、特にクエリ文字列が存在しないか、複数のクエリ パラメータが含まれている場合に、不安定な動作が発生する可能性があります。 strtok() の有効性を説明するために、次のデモを考えてみましょう。

$urls = [
    'www.example.com/myurl.html?unwantedthngs#hastag',
    'www.example.com/myurl.html'
];

foreach ($urls as $url) {
    var_export(['strtok: ', strtok($url, '?')]);
    echo "\n";
    var_export(['strstr/true: ', strstr($url, '?', true)]); // unreliable
    echo "\n";
    var_export(['explode/2: ', explode('?', $url, 2)[0]]);  // limit stops after first encounter
    echo "\n";
    var_export(['substr/strrpos: ', substr($url, 0, strrpos( $url, "?"))]);  // unreliable
    echo "\n---\n";
}
ログイン後にコピー

出力:

array (
  0 => 'strtok: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'strstr/true: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'explode/2: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'substr/strrpos: ',
  1 => 'www.example.com/myurl.html',
)
---
array (
  0 => 'strtok: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'strstr/true: ',
  1 => false,                       // unreliable
)
array (
  0 => 'explode/2: ',
  1 => 'www.example.com/myurl.html',
)
array (
  0 => 'substr/strrpos: ',
  1 => '',                          // unreliable
)
---
ログイン後にコピー

出力に見られるように、strtok はクエリ文字列なしで目的の URL を一貫して返します。クエリ文字列が存在するか空であるかは関係ありません。 strtok() を使用すると、任意のリクエストから効果的かつ確実にクリーンな URL を抽出できます。

以上がPHP で URL からクエリ文字列を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート