解析网址,获取哈希值,追加并重定向网址

时间:2013-03-26 18:54:07

标签: php

我有一个PHP foreach循环,它获取了一组数据。一个特定的数组是href。在我的echo语句中,我将特定的href附加到我的下一页,如下所示:

echo '<a href="nextpage.php?url='.stats.'">Stats</a>'

它重定向到我的下一页,我可以通过$ _GET获取URL。问题是我想在附加的URL中的#后面获取值。例如,下一页的URL如下所示:

stats.php?url=basket-planet.com/ru/results/ukraine/?date=2013-03-17#game-2919

我想要做的是能够在第一页的javascript或jQuery中获得#game-2919,将其附加到URL并转到stats.php页面。这甚至可能吗?我知道我不能在PHP之后得到#的值,因为它不是发送到服务器端的。有解决方法吗?

这就是我的想法:

echo '<a href="#" onclick="stats('.$stats.');">Stats</a>';

<script type="text/javascript">
  function stats(url){
    var hash = window.location.hash.replace("#", "");
    alert (hash);
  }

但那不起作用,我没有警报,所以我甚至无法尝试AJAX并重定向到下一页。提前谢谢。

更新:这是我的整个index.php页面。

<?php
include_once ('simple_html_dom.php');
$html = file_get_html('http://basket-planet.com/ru/');
foreach ($html->find('div[class=games] div[class=games-1] div[class=game]') as $games){
  $stats = $games->children(5)->href;
  echo '<table?
          <tr><td>
            <a href="stats.php?url=http://www.basket-planet.com'.$stats.'">Stats</a>
          </td></tr>
        </table>';
        }
?>

我的stats.php页面:

<?php include_once ('simple_html_dom.php');
$url = $_GET['url'];
//$hash = $_GET['hash'];
$html = file_get_html(''.$url.'');
$stats = $html->find('div[class=fullStats]', 3);
    //$stats = $html->find('div[class='.$hash.']');
echo $stats;
?>

我希望能够做的是将哈希添加到传递给stats.php的URL。代码不多,因为我使用的是简单的HTML DOM解析器。我希望能够使用stats.php URL中的哈希来查看传递的URL。希望有所帮助...

2 个答案:

答案 0 :(得分:0)

这是你要找的吗?

function stats(url)
{

  window.location.hash = url.substring(url.indexOf("#") + 1)

  document.location.href = window.location

}

如果您当前的网址为index.php#test而您致电stats('test.php#index'),则会将您重定向到index.php#index

或者,如果您要将当前网址的哈希添加到自定义网址:

function stats(url)
{
  document.location.href = url + window.location.hash
}

如果您当前的网址为index.php#test而您致电stats('stats.php'),则会将您重定向到stats.php#test

发表评论:

function stats(url)
{

  var parts = url.split('#')

  return parts[0] + (-1 === parts[0].indexOf('?') ? '?' : '&') + 'hash=' + parts[1] 

}

// stats.php?hash=test
alert(stats('stats.php#test'))

// stats.php?example&hash=test
alert(stats('stats.php?example#test'))

答案 1 :(得分:0)

在生成HREF时在PHP中使用urlencode,以便在用户单击链接时浏览器不会丢弃哈希部分:

的index.php:

<?php
include_once ('simple_html_dom.php');
$html = file_get_html('http://basket-planet.com/ru/');

echo '<table>';
foreach ($html->find('div[class=games] div[class=games-1] div[class=game]') as $games){
  $stats = $games->children(5)->href;
  echo '<tr><td>
            <a href="stats.php?url=http://www.basket-planet.com'.urlencode($stats).'">Stats</a>
          </td></tr>';
}
echo '</table>';
?>

然后在第二页上,parse网址中的哈希部分。

stats.php:

<?php
include_once ('simple_html_dom.php');

$url = $_GET['url'];
$parsed_url = parse_url($url);
$hash = $parsed_url['fragment'];

$html = file_get_html(''.$url.'');
//$stats = $html->find('div[class=fullStats]', 3);
$stats = $html->find('div[class='.$hash.']');
echo $stats;
?>