从url获取片段后出现PHP问题。

从url获取片段后出现PHP问题。,php,javascript,hash,fragment,Php,Javascript,Hash,Fragment,我有一些页面,它的url就像http://www.domainname.com/m1.php?#m2.php?more=apple&starting=1 我想要获取值$\u get['more']&$\u get['starting'] 我使用这个代码 <script type="text/javascript"> var parts = location.href.split('#'); if(parts.length > 1) { var params = part

我有一些页面,它的url就像
http://www.domainname.com/m1.php?#m2.php?more=apple&starting=1

我想要获取值
$\u get['more']
&
$\u get['starting']

我使用这个代码

<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'];
}
?>

var parts=location.href.split(“#”);
如果(零件长度>1)
{
var params=parts[0]。拆分(“?”);
变量标记='?';
如果(参数长度>1)
{
马克='&';
}
location.href=parts[0]+mark+'fragment='+parts[1];
}

但是我仍然得到了
m2.php?more=apple
并且丢失了
start=1
。如何获得其中的两个?然后分为
$\u GET['more']
$\u GET['starting']
?谢谢

您的代码实际上还没有接近获得这两个值。因为太远了,我不知道该怎么办

如果您的PHP代码在设置新位置后运行,那么您希望值
more
start
位于散列(
#
)之前,因为散列部分不会发送到服务器

如果您想在JavaScript中获得
更多的
开始的
值,那么它可以是任意一个位置,但是您需要知道您处于哪一个阶段才能以正确的方式获得它

例子 网址:http://www.domainname.com/m2.php?more=apple&starting=1

查询字符串:
more=apple&start=1

哈希:无

Javascript:

var hash = location.hash; // m2.php?more=apple&starting=1
var hashparts = hash.split("?");
var urlhashpart = hashparts[0]; // m2.php
var querystringhashpart = hashparts[1]; // more=apple&starting=1
var params = querystringhashpart.split("&");
for (var i in params) {
    var param = params[i].split("=");
    document.write(param[0] + ": " + param[1]); // outputs 'more: apple', 'starting: 1'
}

或者,如果您希望在PHP中使用此信息,则将
parse_url()
parse_str()
简单组合也可以:

$url = parse_url('http://www.domainname.com/m1.php?#m2.php?more=apple&starting=1');
$anchorparts = explode('?',$url['fragment']);
parse_str($anchorparts[1],$vars);
转储
$vars
会产生:

array(2) {
  ["more"]=>
  string(5) "apple"
  ["starting"]=>
  string(1) "1"
}

我添加了您上一个
Javascript
,但没有弹出alart窗口。
$url = parse_url('http://www.domainname.com/m1.php?#m2.php?more=apple&starting=1');
$anchorparts = explode('?',$url['fragment']);
parse_str($anchorparts[1],$vars);
array(2) {
  ["more"]=>
  string(5) "apple"
  ["starting"]=>
  string(1) "1"
}