我正在尝试在查询字符串中发布#参数,例如...
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);