如何从PHP中的HTML表中提取数据?

时间:2012-12-06 05:00:16

标签: php html-parsing

  

可能重复:
  How to parse and process HTML with PHP?

假设我想从这里从表格中提取某个数字/文字:http://www.fifa.com/associations/association=chn/ranking/gender=m/index.html

我希望在 FIFA排名位置下的右表td上获得第一个数字。那将是 88 。经检查,为<td class="c">88</td>

我如何使用PHP从所述网页中提取信息?

编辑:我被告知JQuery / JavaScript是为了这个...更适合

3 个答案:

答案 0 :(得分:1)

这可能更漂亮,但它会像:

<?php
$page = file_get_contents("http://www.fifa.com/associations/association=chn/ranking/gender=m/index.html");
preg_match('/<td class="c">[0-9]*</td>/',$page,$matches);
foreach($matches as $match){
    echo str_replace(array( "/<td class=\"c\">", "</td>"), "", $match);
}
?>

我之前从未做过这样的事情,所以它可能无法正常工作。

如果你可以在页面加载后运行你的魔法,你可以使用JavaScript / JQuery

<script type='text/javascript'>
var arr = [];

jQuery('table td.c').each(
    arr[] = jQuery(this).html();
);

return arr;
</script>

另外,抱歉删除我的评论。你没有具体说明需要做什么,所以我最初虽然jQuery更适合你的需求,但后来我想“也许你想在加载HTML页面之前获取页面内容”。

答案 1 :(得分:0)

尝试http://simplehtmldom.sourceforge.net/

$html = file_get_html('http://www.google.com/');
echo $html->find('div.rankings', 0)->find('table', 0)->find('tr',0)->find('td.c',0)->plaintext;

这是未经测试的,只是查看来源。我相信你可以更快地瞄准它。

事实上,

echo $html->find('div.rankings', 0)->find('td.c',0)->plaintext;

应该有用。

答案 2 :(得分:0)

使用DOMDocument,它应该预先加载PHP安装:

$dom = new DOMDocument();
$dom->loadHTML(file_get_contents("http://www.example.com/file.html"));
$xpath = new DOMXPath($dom);
$cell = $xpath->query("//td[@class='c']")->item(0);
if( $cell) {
    $number = intval(trim($cell->textContent));
    // do stuff
}