首頁 >後端開發 >php教程 >如何在 PHP 中有效地從 URL 中刪除查詢字串?

如何在 PHP 中有效地從 URL 中刪除查詢字串?

DDD
DDD原創
2024-12-04 18:14:12112瀏覽

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 部分。特點。與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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn