參數我有一個像http://localhost.com/api/authenticateuser?user=demo&pass=demo#123如何獲得特殊字符從URL
一個url但是當我使用$_GET['pass']
我只能拿到$_GET['pass']
值"demo"
不"demo#123"
是有什麼辦法得到的參數值"demo#123"
感謝
參數我有一個像http://localhost.com/api/authenticateuser?user=demo&pass=demo#123如何獲得特殊字符從URL
一個url但是當我使用$_GET['pass']
我只能拿到$_GET['pass']
值"demo"
不"demo#123"
是有什麼辦法得到的參數值"demo#123"
感謝
你必須來urlencode您的網址,以逃避特殊/禁止字符。
的#後的部分稱爲片段標識符,並且它不被髮送到服務器。如果你想這樣發送,你需要使用encodeURIComponent。
您需要確保URL已正確轉義 - 請參閱URL Escape Codes以供參考。例如,#
應該轉義爲%23
。
有很多方法可以做到這一點,包括使用JavaScript函數encodeURIComponent(用於動態生成的鏈接)。
嗯,我正在處理一個AngularJS應用程序,它檢查用戶是否登錄了每個請求。
在某些時候,應用程序會將用戶重定向到使用參數「next」傳遞用戶當前狀態的/ login控制器。
所以我已經得到了這個網址「http://test.dev/login/?next=/#/foo/bar」,我想獲得$ _GET ['next']的值,但是等等...爲什麼heck只返回'/'?
那麼,事實證明,我需要使用JavaScript方法encodeURIComponent()來生成URL。
然後這個:http://test.dev/login/?next=/#/foo/bar,成爲這個:http://test.dev%2Flogin%2F%3Fnext%3D%2F%23%2Ffoo%2Fbar和PHP能夠處理這個很好。
詳細說明,#是網址中的一個特殊字符(指向頁面內的錨點)。要將其用作查詢字符串的一部分,需要對其進行編碼,這將在URL中看起來像%23,但#在$ _GET中。 – grossvogel 2010-07-20 15:26:46
首先,我相信應該使用urlencode的rawurlencode instread,因爲urlencode的空間編碼方式(如'+')幾乎不推薦使用,並且僅用於遺留目的。其次,他不會收到服務器端的URL,他會嗎? '#'符號表示一個片段,並且它後面(包括它)返回給服務器。據我所知,這個答案不會奏效。 – Stephen 2010-07-20 15:28:07
@Stephen:編碼空格as +是'application/x-www-form-urlencoded'內容類型的一部分,當沒有文件輸入時,HTML用於通過查詢字符串和POST函數發送表單數據當下。這種媒體類型仍然是HTML5中表單的默認格式;因此,它不**棄用。 – Powerlord 2010-07-20 15:37:13