如何从url获取特殊char作为参数

时间:2010-07-20 15:21:34

标签: php

我有一个像http://localhost.com/api/authenticateuser?user=demo&pass=demo#123

这样的网址

但是,当我使用$_GET['pass']时,我只能$_GET['pass'] "demo"的价值而不是"demo#123"

有没有办法让参数值为"demo#123"

由于

4 个答案:

答案 0 :(得分:3)

你必须urlencode你的网址,以逃避特殊/禁止的字符。

http://php.net/manual/en/function.urlencode.php

答案 1 :(得分:1)

#之后的部分称为片段标识符,它不会发送到服务器。如果您想以这种方式发送,则需要使用encodeURIComponent

答案 2 :(得分:0)

您需要确保正确转义网址 - 请参阅URL Escape Codes以获取参考。例如,#应该转义为%23

有很多方法可以做到这一点,包括使用JavaScript函数encodeURIComponent(用于动态生成的链接)。

答案 3 :(得分:0)

好吧,我正在开发一个AngularJS应用程序,它检查用户是否每次请求都登录。

在某些时候,app会使用参数“next”将用户重定向到/ login controller传递用户的当前状态。

所以我得到了这个网址“http://test.dev/login/?next=/#/foo/bar”,我希望得到$ _GET ['next']的值,但等等......为什么这只是返回'/'?

好吧,事实证明我需要使用JavaScript方法encodeURIComponent()来生成URL。

然后这个:http://test.dev/login/?next=/#/foo/bar,变成了这个:http://test.dev%2Flogin%2F%3Fnext%3D%2F%23%2Ffoo%2Fbar并且PHP能够很好地处理这个问题。