0

我希望能够将我服务器上来自 gametracker.com 的前 10 名玩家显示到我的网页中。现在我查看了显示前 10 名玩家的 gametracker.com 页面的源代码,部分看起来像这样

<div class="blocknew blocknew666">
        <div class="blocknewhdr">
            TOP 10 PLAYERS <span class="item_text_12">(Online &amp; Offline)</span>
        </div>
        <table class="table_lst table_lst_stp">
            <tr>
                <td class="col_h c01">
                    Rank
                </td>
                <td class="col_h c02">
                    Name
                </td>
                <td class="col_h c03">
                    Score
                </td>
                <td class="col_h c04">
                    Time Played
                </td>
            </tr>
            .
            .
            .
            .
        </table>
        <div class="item_h10">
        </div>
<a class="fbutton" href="/server_info/*.*.*.*:27015/top_players/">
            View All Players &amp; Stats
        </a>
    </div>

如您所见,我想要的内容class="blocknew blocknew666"在 id 中,如果它在 id 中,我可以轻松地将其取出,但当内容在类中时,我不知道如何处理它。我在网上查了一下,发现了这个

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>'; 

是否可以使用此代码来做我想做的事?如果是,请写下我需要使用的代码行,或者给我一些关于如何解决这个问题的建议。

4

3 回答 3

1

我只会发布部分答案,因为我认为这样做可能违反了 GameTracker 服务的使用条款,您所要求的基本上是一种从另一个网站窃取专有内容的方法。在执行此操作之前,您绝对应该从 GameTracker 获得许可。

为此,我将使用 strstr。http://php.net/manual/en/function.strstr.php

$html = file_get_html('http://www.gametracker.com/server_info/someip/');
$topten = strstr($html, 'TOP 10 PLAYERS');
echo $topten; //this will print everthing after the content you looked for.

现在,我将由您来决定如何删除前十名完成后出现的不需要的内容,并获得 GameTracker 的使用许可。

于 2013-10-03T05:45:28.937 回答
0

根据震颤的建议,这是上述问题的工作代码

    <?php

function rstrstr($haystack,$needle)
    {
        return substr($haystack, 0,strpos($haystack, $needle));
    }

$html = file_get_contents('http://www.gametracker.com/server_info/*.*.*.*:27015/');
$topten = strstr($html, 'TOP 10 PLAYERS');//this will print everthing after the content you looked for.
$topten = strstr($topten, '<table class="table_lst table_lst_stp">');
$topten = rstrstr($topten,'<div class="item_h10">'); //this will trim stuff that is not needed
echo $topten;

?>
于 2013-10-03T06:27:24.747 回答
0

您提供的代码是 simpledom 库的一部分

http://simplehtmldom.sourceforge.net/

您需要下载并包含库才能使代码正常工作。

于 2013-10-03T06:50:19.963 回答