0

重複の可能性:
PHP で HTML を解析および処理する方法は?

ここからテーブルから特定の番号/テキストを抽出したいとしましょう: http://www.fifa.com/associations/association=chn/ranking/gender=m/index.html

FIFA ランキングの位置tdの下にある右のテーブルの最初の番号を取得したいです。それは今88になります。調べたところ、 です。<td class="c">88</td>

上記のWebページから情報を抽出するために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

PHP インストールで事前にロードする必要があるを使用DOMDocumentします。

$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 に答える