我有另一位已离开项目的程序员的软件。现在我遇到了一个问题,一些带有GET变量的URL无法工作我认为这是因为#所以这个URL看起来像这样。
www.domain.com/myvariable1/myvariable-#2
因为你可以看到GET变量只解析'myvariable-'所以#2被切掉了。我需要完整的'myvariable-#2'
我搜索了谷歌并花了好几个小时来解决这个问题。请帮我。谢谢!
编辑:
所以我找到了这样做的解决方案。我使用javascript解析整个URL,从那里我现在可以获得#
之后的剩余字符串感谢您的所有答案。非常感谢!
答案 0 :(得分:11)
#
启动片段标识符。片段是在客户端处理的,URI的一部分甚至没有首先发送到服务器,所以你只是不能在那里处理它。
答案 1 :(得分:2)
无法从PHP获取片段(#...
)。似乎有一种方法可以用javascript做到这一点。见Parsing URL hash/fragment identifier with JavaScript
以防你是在Unix机箱上:你可以从终端窗口运行nc
(netcat),如下所示:
$ nc -l 8080
打开端口8080上的读取连接。现在,您可以将此计算机上的浏览器连接到该端口并请求URL,例如http://localhost:8080/foobar/baz.html#abcde
。 netcat的输出标识服务器看到的URL:
GET /foobar/baz.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
因此请求的路径为/foobar/baz.html
,没有片段标识符(#abcde
)。
答案 2 :(得分:0)
正如其他人所指出的,URL #
是片段标识符的分隔符。
如果路径中包含#
字符,则必须对其进行正确编码:www.domain.com/myvariable1/myvariable-%232
。
这样,服务器看到的路径为myvariable1/myvariable-#2
。