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


How to get hash(#) value in query string

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

www.demo.php?tag=c#

现在我正在尝试在另一个页面中获取标签值

$_GET['tag']

但我没有得到以某种方式#价值没有带来_GET美元。我只能得到"c"。

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

片段标识符由浏览器处理,当浏览器向服务器发出 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);