从url获取片段后出现PHP问题。
我有一些页面,它的url就像从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
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"
}