-1

データの配列を取得しているPHPforeachループがあります。1つの特定の配列は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にハッシュを追加することです。Simple HTML DOMパーサーを使用しているため、コードはそれほど多くありません。stats.php URLのハッシュを使用して、渡されたURLを調べられるようにしたいと思います。お役に立てば幸いです...

4

2 に答える 2

0

これはあなたが探しているものですか?

function stats(url)
{

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

  document.location.href = window.location

}

現在のURLがindex.php#testであり、呼び出すstats('test.php#index')と、にリダイレクトされますindex.php#index

または、現在のURLのハッシュをカスタムURLに追加する場合:

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

現在のURLが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'))
于 2013-03-26T19:56:31.927 に答える
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>';
?>

次に、2ページ目で、URLからハッシュ部分を解析します。

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;
?>
于 2013-03-26T21:17:19.257 に答える