我正在创建一个url链接,其中一个GET变量中有一个哈希符号。网页将不会读取哈希标记后的任何数据。我不能把它拿出来有两个原因。
网址看起来像这样
www.example.com?datapoint1=abc&datapoint2=#def
其中#def是必需的,因为网页将在数据库中搜索这个确切的字符串。如果我可以编辑网页php我可以在必要时把哈希放进去,但正如我所说,我没有。
进一步解释。用户收集数据(在Java应用程序中)并将数据放入长URL(如上面的示例,但更复杂),并通过此链接自动通过电子邮件发送给特定用户。第二个用户点击链接并执行他/她必须做的任何事情。
我认为唯一的方法是编辑网页的php或javascript。任何想法,将不胜感激。
答案 0 :(得分:4)
您必须将#
编码为%23
,因此您的网址如下所示:
www.example.com?datapoint1=abc&datapoint2=%23def
为了更容易,您可以使用PHP的内置urlencode函数:http://php.net/urlencode
答案 1 :(得分:1)
如果您不希望它成为哈希部分,则需要在URL中转义哈希值。 #
的urlencoded字符为%23
。
您可以使用php中的urlencode()
(php.net doc)来转义php中的值。
您可能还想了解http_build_query_string(),它可以生成url查询并从键值数组中正确编码值。有关详细信息,请查看php.net examples。
如果您无法访问PHP但可以使用JS(这是次优的),您可以创建一个小脚本,当它看到存在哈希值时重写该URL(仅当哈希值从不存在时才会起作用)
if(window.location.hash) {
// Hash detected, lets rebuild the url
window.location.href = window.location.href + '%23' + window.location.hash.slice(1);
}