0

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

我想获得价值$_GET['more']& $_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'];
}
?>

但我还是得失m2.php?more=applestarting=1。如何获得其中的2个?然后分成$_GET['more']& $_GET['starting']? 谢谢。

4

2 回答 2

1

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

如果您的 PHP 代码在设置新位置正在运行,那么您需要将值morestarting放在哈希 ( )之前#,因为哈希部分不会发送到服务器。

如果你想在 JavaScript 中获取morestarting值,那么它可以是任何一个地方,但你需要知道你处于什么阶段才能以正确的方式获取它。

例子

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

查询字符串:more=apple&starting=1
哈希:

<?php
echo $_GET['more']; // apple
echo $_GET['starting']; // 1

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

查询字符串:
哈希:m2.php?more=apple&starting=1

<?php
echo count($_GET) // 0

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'
}
于 2011-05-11T23:02:21.717 回答
0

或者,如果您希望获取此信息以在 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);

then的转储$vars产生:

array(2) {
  ["more"]=>
  string(5) "apple"
  ["starting"]=>
  string(1) "1"
}
于 2011-05-11T23:54:16.630 回答