2011-09-08 95 views
3

問我有改變我的網站的URL服務工作:http:://example.com/#/?id=9需要解析奇怪的URL(包含/#/?)

我似乎無法能夠從這樣的URL獲得ID。 $_GET爲空,$_SERVER['REQUEST_URI']只包含/

我該如何得到參數?

事情我已經嘗試:

Zend_Debug::dump($_GET); // outputs array(0) 
echo $_SERVER['REQUEST_URI']; // outputs/
Zend_Debug::dump(parse_url($_SERVER['REQUEST_URI'])); // outputs array(["path"] => string(1) "/") 

我使用Zend框架,但我懷疑它的東西,用它做。

在此先感謝。

+0

@戈登謝謝。 – Iznogood

+0

實際上有幾個問題要求:http://stackoverflow.com/search?q=fragment+url+php。在你的例子中,它有點不明顯,因爲在片段後面有一個斜線,看起來好像片段是路徑片段的一部分。 – Gordon

+0

@gordon找到這些答案,我將不得不知道尋找片段:)感謝您指出這些,我會檢查出來。 – Iznogood

回答

3

你不能用PHP解析這個問題,原因很簡單,就URL而言,除了#(hash)之外的任何東西都不是URL的一部分,該部分必須用JavaScript或類似的客戶端進行解析方語言。在服務器不可能的,去與客戶端:

window.location.hash 

將返回一切都會過去的散列(包括#字符)


總之。 (也許用GET數據發佈ajax調用服務器)

+0

+1我完全同意。對於OP:有時當鏈接被格式化爲'top'時,點擊該鏈接將不會向服務器發送任何內容,而是保持在同一頁面上。因此使用JavaScript似乎是最合理的方式。如果哈希更改,您有['onhashchange'事件](https://developer.mozilla.org/en/DOM/window.onhashchange)。 – Tadeck

+1

是的,我打算去ajax沒有什麼大不了的是跳,我可以從PHP做到這一點。謝謝! – Iznogood

1

所有包括並遵循#的內容僅供瀏覽器使用僅限

服務器從來沒有看到它。