我试图在查询字符串中发布#参数,如...
www.demo.php?tag=c#
现在我正在尝试使用
在另一个页面中获取标记值$_GET['tag']
但我没有得到某种方式#值不会与$ _GET一起出现。我只能得到“c”。
答案 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);