我试图使用“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];
?>
如果您需要更多信息(网站等),请发布并添加。
编辑:很多帮助!非常感谢你!我现在必须出去,但当我回来时,我将实施其中一个解决方案!
答案 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的更多信息,请访问: