Php从URL获取哈希值

时间:2010-10-02 23:11:46

标签: php javascript variables

如何在php中获取哈希变量。

我在页面上有一个变量

catalog.php#album=2song=1

如何获取专辑和歌曲值并将它们放入PHP变量中?

3 个答案:

答案 0 :(得分:8)

你不能用PHP获得这个值,因为PHP处理服务器端的东西,而URL中的哈希只是客户端,永远不会被发送到服务器。 JavaScript 可以使用window.location.hash获取哈希值(并且可选地调用包含此信息的PHP脚本,或者将数据添加到DOM中)。

答案 1 :(得分:4)

只需添加@ Alec的答案。

有一个parse_url()功能:

哪个可以返回fragment - after the hashmark #。但是,在您的情况下,它将在hashmark后返回所有值:

Array
(
    [path] => catalog.php
    [fragment] => album=2song=1
)

正如@NullUserException指出的那样,除非事先有url,否则这实际上是毫无意义的。但是,我觉得很高兴知道。

答案 2 :(得分:1)

您可以使用AJAX / PHP。您可以使用javaScript获取哈希并使用PHP加载一些内容。 假设我们正在加载页面的主要内容,因此我们的哈希值为“http://www.example.com/#main”:

我们头脑中的JavaScript:

 function getContentByHashName(hash) { // "main"
    // some very simplified AJAX (in this example with jQuery)
    $.ajax({
      url: '/ajax/get_content.php?content='+hash, // "main"
      success: function(content){
        $('div#container').html(content); // will put "Welcome to our Main Page" into the <div> with id="container"
      }
    });
 }

 var hash=parent.location.hash; // #main
 hash=hash.substring(1,hash.length); // take out the #

 getContentByHashName(hash);

PHP可以有类似的东西:

<?php
// very unsafe and silly code

$content_hash_name = $_GET['content'];

if($content_hash_name == 'main'):
  echo "Welcome to our Main Page";
endif;

?>