我有一个页面,URL为 localhost/index.php?#search.php?more=appale&starting=1由于有一个#号,php无法直接获取数值,所有我在网上找了个js的代码,通过 location.hash 和 split 分离获取井号后面的值,具体代码和注释如下。现在,如何把JS获取的值(apple 和 1),分别转换成 $_GET['more'] 和 $_GET['starting'] ? 谢谢。<script type="text/javascript">
var hash = location.hash; // search.php?more=apple&starting=1
var hashparts = hash.split("?");
var urlhashpart = hashparts[0]; // search.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] + "<br />" + param[1]+ "<br />" ); // outputs 'more 空格 apple', 'starting 空格 1'
}
</script>

解决方案 »

  1.   

    $str = $_SERVER['QUERY_STRING']; //看看内容是不是#search.php?more=appale&starting=1
    $arr = explode('?',$str);
    $arr = explode('&',$arr[1]); //0 => more=apple, 1 => starting = 1
    foreach($arr as $v) {
        $tmp = explode('=',$v);
        echo $tmp[0].'<br />'.$tmp[1].'<br />';
    }
      

  2.   

    假设csdn.net/index.php?#search.php?more=appale&starting=1
    里面放上你的js你在家里访问上面这个网址你觉得是csdn.net的php先输出,还是你家里浏览器的js先输出?
    var_dump($_REQUEST);
    看看有没有你需要的内容显示?
      

  3.   

    @T5500, 试过了,不能。我查的资料,用google翻译的。
    参照: http://tools.ietf.org/html/rfc2396#section-4 
    PHP无法获取 # 部分的值。
      

  4.   

    @snmr_com,为什么不可以呢?比如下面这种,同样保存文件命名为index.php,在浏览器里键入:
    localhost/index.php?#search.php?more=appale&starting=1
    ,你试试是JS先输出还是PHP先输出?
    只不过下面的代码,只能获得search.php?more=appale,后面的&starting=1被舍弃掉了……
    <script type="text/javascript">
    var parts = location.href.split('#');
    if(parts.length > 1)
    {
        var params = parts[0].split('?');
        var  = '?';
        if(params.length > 1)
        {
             = '&';
        }
        location.href = parts[0] +  + 'fragment=' + parts[1];
    }
    </script>
    <?php
    if(isset($_GET['fragment']))
    {
        echo $_GET['fragment'];
    }
    ?>