1

私は一族のウェブサイトを開発しています:piritsofpopulous.comli.com/ これはゲームの一族のウェブサイトです。一族のメンバーのゲーム履歴を取得し、プロフィール ページに表示したいと考えていました。ここで確認できます:

http://piratesofpopulous.comli.com/user.php?username=ワリード

そのページはユーザー向けに公開されておらず、私はまだ作業中です。問題は、explode メソッドを使用してこのページを爆発させたことです: http://www.popre.net/game.php?u=38456。次に、ゲームが保存された配列、つまり $expl[596] を使用します。

私はこのコードを使用しています:

//Breaking the URL
$url = "$profile_link"; <-- This profile link will be driven from the database, Its saved when user is registered.
parse_str( parse_url( $url, PHP_URL_QUERY), $params);

//After Breaking putting the value of u in function
function gameStats($u)
{
$result = file_get_contents('http://popre.net/game.php?u='. $u . '');
$expl = explode('"',$result);

echo"<br>Level: $expl[580]<br>";
echo"Players: $expl[596]<br><br>";
echo"Result: $expl[584]<br><br>";
echo"Points: $expl[586]<br><br>";
}
gameStats( $params['u']);

www.popre.net/user.php?u=38456 <-- リンクには user.php?u=someid が含まれています。

ただし、ゲームは user.php ではなく game.php に保存されます。つまり: www.popre.net/game.php?u=38456 <-- game.php/u=same_user_id

プロファイル リンクから "u" の値を取得するために URL を壊し、それを game.php に入れて配列を取得し、選択配列を表示します......

次の方法ですべてのアレイを表示できます。

print_r($expl);

しかし、問題は、たとえば、爆発配列 $expl[596] が他のデータを含む別のもの、つまり $expl[580] に変更されることです。しかし、さらに数分後には $expl[596] に戻ります。その後、データとゲームが正しく表示されます。私がこれらを紹介しているページをここで見ることができます: http://piratesofpopulous.comli.com/user.php?username=Waleed 私はまだそれに取り組んでいます。

それで、完全な配列番号を取得する方法はありますか?データは他のデータを表示せずに永続的に表示されますか?

または、配列が変更された場合に機能する他の方法はありますか?

それとも何か?

どんな助けでも私にとって良いでしょう.....

編集:

マップ(ゲームレベル)、プレイヤー、結果、ポイントを取得するためにこれを行っています。しかし、しばらくすると配列が爆発します ie:Player $expl[600]; $expl[596] に変更されました。変化し続けますが、時々 $expl[600] に戻ります。変化し続けている間にデータを取得する方法はありますか?

これは私が使用している私のコードです:

            $url = "$profile_link"; <-- You can use this profile link http://popre.net/user.php?u=38456
            parse_str( parse_url( $url, PHP_URL_QUERY), $params);
            function gameStats($u)
            {
            $result = file_get_contents('http://popre.net/game.php?u='. $u . '');
            $expl = explode('"',$result);

            echo"<div id='games'>";
            echo"<h3>Game 1</h3>";
            echo"<div class='data'>Level:    $expl[584]</div><br>";
            echo"<div class='data'>Player:   $expl[600]</div><br><br>";
            echo"<div class='data'>Result:   $expl[588]</div><br><br>";
            echo"<div class='data'>Points:   $expl[590]</div><br><br></b>";
            echo"</div>";

            }
            gameStats( $params['u']);

ありがとう

4

2 に答える 2

2

preg_match_all()を使用する必要があります。

例: すべてのスクリプト

$url = "www.popre.net/user.php?u=38456";
parse_str( parse_url( $url, PHP_URL_QUERY), $params);

function gameStats($u){
    $result = file_get_contents('http://popre.net/game.php?u='. $u . '');
    $return = array();
    $pattern = "\<td rowspan=\"2\" class=\"gamelevel\">\<span><a href=\"(.*)\">(.*)<\/a><\/span>\n(.*)<a href=\"(.*)\">(.*)<\/a><\/td>\n(.*)<td class=\"gamepointsresult dgame(.*)\">(.*)<\/td>(.*)<td class=\"gamepoints\">(.*)<\/td><td class=\"gamepoints\">(.*)<\/td><td class=\"gamepoints\">(.*)<\/td>\n(.*)<tr class=\"(one|two)\"><td colspan=\"4\" class=\"gameplayerssmall\">(.*)vs.(.*)<\/td>\<\/tr>";
    $match = preg_match_all('/'.$pattern.'/', $result, $matches);

    /* level */      foreach($matches[2] as $num => $one){ $return[$num]['level'] = $one; }
    /* map */        foreach($matches[5] as $num => $one){ $return[$num]['map'] = $one; }
    /* result */     foreach($matches[8] as $num => $one){ $return[$num]['result'] = $one; }
    /* points */     foreach($matches[10] as $num => $one){ $return[$num]['points'] = strip_tags($one); }
    /* mu */         foreach($matches[11] as $num => $one){ $return[$num]['mu'] = strip_tags($one); }
    /* sigma */      foreach($matches[12] as $num => $one){ $return[$num]['sigma'] = strip_tags($one); }
    /* player1 */    foreach($matches[15] as $num => $one){ $return[$num]['player1'] = strip_tags($one); }
    /* player2 */    foreach($matches[16] as $num => $one){ $return[$num]['player2'] = strip_tags($one); }

    return $return;
}

$gameInfo = gameStats($params['u']);

echo "<table border='1'>
        <tr>
            <td>NO</td><td>LEVEL</td><td>MAP</td><td>RESULT</td><td>POINTS</td><td>MU</td><td>SIGMA</td><td>Player 1</td><td>Player 2</td>
        </tr>\n";

foreach($gameInfo as $num => $one){
    echo "<tr>
        <td>".($num+1)."</td><td>".$one['level']."</td><td>".$one['map']."</td><td>".$one['result']."</td><td>".$one['points']."</td><td>".$one['mu']."</td><td>".$one['sigma']."</td><td>".$one['player1']."</td><td>".$one['player2']."</td>
    </tr>\n";
}

echo "</table>";

すべての結果はすべての配列に同じ数の要素を持つため、他の結果と同じようにすべての結果を取得しarray、配列を結合します。

于 2012-08-19T09:13:41.417 に答える
0

echo の値を変更するだけです > $#echo_$expl_Levelname < Joomla または JavaScript を使用している場合...確実に機能します...以下に返信してください

于 2012-09-19T13:19:07.953 に答える