0

これがさまざまなドメインのdivコードです。ホームページに合計を表示したいです。file_get_html を使用しようとしましたが、すべての div コンテンツが表示されますが<dd></dd>、変数内の数値を保存して追加し、自分のページに表示したいと考えています。ここにdivコードがあります

<div class="stats">
    <dl class="statscount">
        <dt>total:</dt>
        <dd>5,299</dd>
    </dl>    
    20000
</div>

ここに私の現在のコードがあります。

<?php
include 'simple_html_dom.php';
$html = file_get_html('http://www.targetdomain.com');
$result = $html->find('dl[class=statscount]', 0);  //Output: THESE
$result = str_replace(",", "", $result);
echo $result;
?>

しかし、小さな問題があります。クラス内のすべてのデータを取得する必要はありません。<dd></dd>クラス内のタグのデータが必要なだけです。これを達成する方法を教えてください。基本的に、内の数字を取得し、<dd>5,299</dd>さまざまなページからすべての数字を追加して、合計を自分のウェブサイトに表示したいと考えています。ありがとう

4

2 に答える 2

1

これにはXPathを使用します。DOM と XPath は PHP5 コアの一部であるため、simple_html_dom は必要ありません。

$html = <<<EOF
<div class="stats">
  <dl class="statscount">
    <dt>total posts:</dt>
    <dd>5,299</dd>
  </dl>
  20000
</div>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($html);
$selector = new DOMXPath($doc);
$value = $selector
    ->query('//dl[@class="statscount"]/dd/text()')
    ->item(0)
    ->nodeValue;

var_dump($value); // Output: string(5) "5,299"

ここでコードをテストできます

于 2013-06-01T08:58:46.990 に答える
0

多分正規表現

preg_match('/<dd>[^>]*(.*)<\/dd>/', $htmlcode, $matches);
$result = $matches;
于 2013-06-01T09:02:16.993 に答える