クエリ文字列を使用しない 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 サイトの他の関連記事を参照してください。