這是因爲#
被看作是fragment identifier的開始和干擾分析器。
您可以採取簡單的方式,建議使用Stretch,但您應該知道q
是您網址中的最後一個查詢參數。因此,它可能是更好的解決該URL和更安全的方式提取出查詢參數:
<?php
$url = "http://www.16start.com/results.php?cof=GALT:#FFFFFF;GL:1;DIV:#FFFFFF;FORID:1&q=search";
// Replace # with its HTML entity:
$url = str_replace('#', "%23", $url);
// Extract the query part from the URL
$query = parse_url($url, PHP_URL_QUERY);
// From here on you could prepend the new url
$newUrl = "http://www.newURL.com/results.php?" . $query;
var_dump($newUrl);
// Or you can even go further and convert the query part into an array
parse_str($query, $params);
var_dump($params);
?>
輸出
string 'http://www.newURL.com/results.php?cof=GALT:%23FFFFFF;GL:1;DIV:%23FFFFFF;FORID:1&q=search' (length=88)
array
'cof' => string 'GALT:#FFFFFF;GL:1;DIV:#FFFFFF;FORID:1' (length=37)
'q' => string 'search' (length=6)
更新
您的意見後,似乎該URL在您的腳本中不可用爲string
,並且您想從瀏覽器中獲取該URL。
壞消息是PHP不會收到片段部分(#之後的所有內容),因爲它不會發送到服務器。如果您在瀏覽器的開發工具中檢查網絡選項卡,則可以驗證此項。F12。
在這種情況下,您必須在http://www.16start.com/results.php
上託管一個頁面,其中包含一些用於解析片段並重定向用戶的客戶端JavaScript。
看起來像查詢字符串有很多東西,然後變量產生奇怪的行爲。嘗試使用$ _SERVER數組來獲取查詢字符串,然後在q = – leitning
之後子串字符串什麼是syntex以使用$ _SERVER –