参数我有一个像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