0

可能重复:
如何使用 PHP 解析和处理 HTML?

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

我想在FIFA Ranking 位置td下的右表中获得第一个数字。现在应该是88。经检查,是。<td class="c">88</td>

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

编辑:有人告诉我 JQuery/JavaScript 是为了这个……更适合

4

3 回答 3

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);
}
?>

我以前从来没有用 PHP 做过这样的事情,所以它可能不起作用。

如果你可以在页面加载发挥你的魔力,你可以使用 JavaScript/JQuery

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

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

return arr;
</script>

另外,很抱歉删除我的评论。您并没有具体说明需要做什么,所以我最初认为 jQuery 会更好地满足您的需求,但后来我想“也许您想在加载 HTML 页面之前获取页面内容”。

于 2012-12-06T05:15:31.580 回答
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;

应该管用。

于 2012-12-06T05:07:28.313 回答
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
}
于 2012-12-06T05:15:16.503 回答