用js href.split散列后,php可以从url获取值吗?

时间:2011-05-11 21:33:12

标签: php javascript hash get split

我有一些网址,例如http://www.domainname.com/m1.php?#m2.php?more=apple&starting=1

如何使用PHP获取值$_GET['more']& $_GET['starting']

是否可以使用js href.split来获取哈希#后面的值?

更新了问题:

添加一些代码如下:我仍然获得$_GET['fragment'] = m2.php?more=apple,但丢失了&starting=1,我下次该怎么做?

<script type="text/javascript">
var parts = location.href.split('#');
if(parts.length > 1)
{
    var params = parts[0].split('?');
    var mark = '?';
    if(params.length > 1)
    {
        mark = '&';
    }
    location.href = parts[0] + mark + 'fragment=' + parts[1];
}
</script>
<?php
if(isset($_GET['fragment']))
{
    echo $_GET['fragment'];
}
?>

3 个答案:

答案 0 :(得分:1)

我认为您应该能够使用PHP的内置函数parse_url http://php.net/manual/en/function.parse-url.php

如果查看返回值,可以将查询参数作为哈希值,#之后的值是fragment

答案 1 :(得分:1)

在php中你根本看不到请求的片段。

您只能使用javascript

查看

答案 2 :(得分:0)

您可以这样做以在php中使用哈希片段。

需要页面重新加载,但它有效。 您可以在任何其他js标记之前设置此脚本标记,以便不会延迟重新加载。

<script type="text/javascript">
if(location.hash.length > 0){
    var hash = location.hash.replace('#','');
    location.href = hash;
    //or
    //location.href = 'index.php?param1=1&hash'+hash;
    //or
    //location.href = '<?=$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'].'&hash='?>'+hash;
}
</script>