取得不含查詢字串的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中文網其他相關文章!