如何在查询字符串中获取哈希(#)值

时间:2016-03-16 17:22:30

标签: php

我试图在查询字符串中发布#参数,如...

www.demo.php?tag=c#

现在我正在尝试使用

在另一个页面中获取标记值
$_GET['tag']

但我没有得到某种方式#值不会与$ _GET一起出现。我只能得到“c”。

1 个答案:

答案 0 :(得分:1)

哈希字符(#)在URL中具有特殊含义。它引入了fragment identifier。片段标识符通常用于定位页面内的某个位置。

片段标识符由浏览器处理,当浏览器向服务器发出HTTP请求时,它将从URL中删除。

作为一个特殊字符,如果您希望它具有字面值,则必须对其进行编码。在您的问题中写入URL的正确方法是:

www.demo.php?tag=c%23

以这种方式编写时,$_GET['tag']包含正确的值('c#')。

如果从PHP代码生成此类URL(可能是通过从数据库等外部资源获取tag的值),则必须使用PHP函数urlencode()来正确编码放入的值在URL中。或者,更好的是,创建一个包含所有URL参数及其值的数组,然后将其传递给http_build_query()以生成URL:

$params = array(
   'tag'  => 'c#',
   'page' => 2,
);
$url = 'http://localhost/demo.php?'.http_build_query($params);