PHP标题:Param值在#之后被截断

时间:2014-12-23 07:03:27

标签: php httprequest

我在PHP中使用以下代码进行重定向

header("Location:restaurantsList.php?msg=Restaurant 100#we updated successfully");

restaurantsList.php当我试图获取request parameters然后获取关注数组时。{/ p>

Array ( [msg] => Restaurant 100 ) 

Param值在'#'之后被截断。

如果传递param中的任何普通文本(没有#),那么我将获得完整的字符串。

是否有任何解决方案可以获取字符串,即使字符串包含#

4 个答案:

答案 0 :(得分:1)

您的查询字符串中应该URL encode个特殊字符,因此您的网址应如下所示:

header("Location:restaurantsList.php?msg=Restaurant%20100%23we%20updated%20successfully");

答案 1 :(得分:1)

#符号用于锚链接,因此如果用作"数据"则必须进行编码。在URL中。您可以使用urlencode PHP函数。 #符号将转换为%23

答案 2 :(得分:1)

url #中的

表现为调用Fragment identifier

的哈希标记

Javascript:window.location.hash; //这是以#标记

开头的返回标记

您需要对服务器端代码中的url组件进行编码以保留消息

header("Location:restaurantsList.php?msg=". 
      urlencode("Restaurant 100#we updated successfully"));

OR

header("Location:restaurantsList.php?msg=Restaurant 100%23we updated successfully");

答案 3 :(得分:1)

urlencode之后需要msg=字符串:

header("Location:restaurantsList.php?msg=" . urlencode("Restaurant 100#we updated successfully");