2016-05-24 101 views
0

我有以下网址GET和filter_input在 “#” 符号停止

http://www.example.com/check.php?q=498#2D83B631%3800EBD!801600D*7E3CC13 

然后我尝试

<?php var_dump($_GET); ?> 

<?php 
echo $my_string = filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING); 
?> 

但他们似乎都停止“#”符号并仅显示498。有没有办法检索整个498#2D83B631%3800EBD!801600D*7E3CC13

+0

是的,因为URL中的'#'定义了'fragment'部分开始的地方,结束了查询部分。您需要编码特殊字符。 –

回答

1

在服务器上,你只能得到url,直到#。如果你想要#之后的值,你需要一些客户端脚本来获取url。

如果这是q的值,则应首先使用urlencode()进行编码。这样,您将得到所有从q

您的网址应该像值:http://www.example.com/check.php?q=498%232D83B631%253800EBD!801600D * 7E3CC13

为了解码您可以使用urldecode()

0

碎片没被发送到服务器的所有URL。

https://en.wikipedia.org/wiki/Fragment_identifier

当一个代理(如Web浏览器)从Web服务器请求网络资源,>该代理发送URI到服务器,但不发送片段。

将数据作为另一个GET参数传递将是一个可行的选择。