PHP解析器 - 复制下一行(?)

时间:2014-08-19 14:44:57

标签: php html parsing simple-html-dom

我试图使用“PHP Simple HTML DOM Parser”解析网站上的数据。我有一个不同的实现,有时不起作用。 (我会在最后发布)

理想情况下,我想在html文档中找到单词“Online:”并复制下一行。

例如:

<tr>
    <td class="tb_1">Online:</td>
    <td class="tb_2">offline</td>
</tr>

它应该找到“在线:”并复制“离线”。


这是我目前的实施。它创建了一个带有“tr”标签的元素数组。然而,这个数字似乎有所改变,所以有时元素19不是我想要的。

<?php
    include ('simple_html_dom.php');
    $html = file_get_html('http://www.guildstats.eu/character?nick=GRUBY%20FESTYNIARZ');

    $element = $html->find("tr");
    echo $element[19];
?>

如果您需要更多信息(网站等),请发布并添加。


编辑:很多帮助!非常感谢你!我现在必须出去,但当我回来时,我将实施其中一个解决方案!

3 个答案:

答案 0 :(得分:1)

你不需要外部库来做到这一点......

使用file_get_contents()...

简单地使用PHP板工具将dom加载为字符串
$content = file_get_contents('http://www.guildstats.eu/character?nick=GRUBY%20FESTYNIARZ');

然后只需找到页面上应该唯一的整个标记:

if(stripos($content, 'Sorry! Guild or character does not exsists') === false) {
    if(stripos($content, '<td class="tb_2">offline</td>') !== false) {
        //Your character is offline
    } else {
        //Your character is online
    }
} else {
    //A character with this name does not exist at all
}

顺便说一句:很酷,在stackoverflow找到参与胫骨的人。 ;)

答案 1 :(得分:0)

使用next_sibling:

$html->find('td[text=Online:]', 0)->next_sibling->text();

答案 2 :(得分:-2)

为什么不使用xpath来检索所需内容。你的代码应该是这样的:

<?php
    include ('simple_html_dom.php');
    $html = file_get_html('http://www.guildstats.eu/character?nick=GRUBY%20FESTYNIARZ');

    $xml = new SimpleXMLElement($html);

    $result = $xml->xpath('/tr/td[. ="Online"]');

    while(list( , $node) = each($result)) {
       echo $node."\n";
    } 
?>

有关xpath的更多信息,请访问:

http://php.net/manual/en/simplexmlelement.xpath.php