1

我正在创建一个 url 链接,其中一个 GET 变量中有一个井号。网页不会读取哈希标记后的任何数据。我不能把它拿出来有两个原因。

  1. 网站数据库(不是我以任何方式设计的)具有各种数据项的哈希符号。我无权编辑数据库。而且我敢肯定,如果我做其他事情会崩溃。
  2. 我无法编辑网址的网页。它是由其他人设计的,我没有任何编辑它的授权。

网址看起来像这样

         www.example.com?datapoint1=abc&datapoint2=#def

其中#def 是必要的,因为网页将在数据库中搜索这个确切的字符串。如果我可以编辑网页 php,我可以在必要时放入哈希,但正如我所说,我没有。

进一步解释一下。用户收集数据(在 Java 应用程序中)并将数据放入一个长 url(如上面的示例但更复杂),并通过此链接自动通过电子邮件发送给特定用户。第二个用户点击链接并做他/她必须做的任何事情。

我认为唯一的方法是编辑网页的 php 或 javascript。任何想法,将不胜感激。

4

2 回答 2

4

您必须对#as进行编码%23,因此您的 URL 如下所示:

www.example.com?datapoint1=abc&datapoint2=%23def

为方便起见,您可以使用 PHP 的内置 urlencode 函数: http: //php.net/urlencode

于 2012-04-06T05:44:25.410 回答
1

如果您不希望它成为散列部分,则需要转义 url 中的散列。a 的 urlencoded 字符#%23.

您可以使用 php 中的urlencode()( php.net doc ) 来转义 php 中的值。

您可能还想了解http_build_query_string(),它可以生成 url 查询并从键值数组中正确编码值。查看php.net 示例以获取更多信息。

如果您无法访问 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);
}
于 2012-04-06T05:45:18.673 回答