2

「H + R + E」を含むノードの値だけではなく、html ドキュメント全体を返すのはなぜですか?

html のサンプル:

<tr class="linesAlt1">
        <td>04:10 PM</td><td style="width:53%;">3055&nbsp;Over</td><td style="width:22%;">3&nbsp;H+R+E&nbsp;&nbsp;+146</td>
    </tr>

私はちょうど取得したい"3&nbsp;H+R+E&nbsp;&nbsp;+146"。しかし、これはすべてのhtmlをダンプします。

<?php

$url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
curl_close($ch);

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);

foreach ($xpath->query("//table/tr/td[contains(., 'H+R+E')]") as $textNode){
  echo $textNode->nodeValue."\n";
}


?>
4

1 に答える 1

0

curl_execデフォルトで出力さSTDOUTれます。これが表示されているものです。つまり、出力をキャプチャしていません$html(またはそのループで何かを出力していません)。まず、出力をリダイレクトする必要があります。

curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch); 

その問題を修正した後、提供された URL のソースを調べたところ、そのテキストがH+R+Eどこにも見つかりませんでした。1 つのテーブルがありますが、その内容ではありません。あなたはそこにない何かを探しています。

ファイルを正しく取得していることを証明するには、次の完全な例を試してください。

$url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch); 
curl_close($ch);

$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);

foreach ($xpath->query("//table") as $table){
      echo "[" . $table->nodeValue . "\n";
}

...次の出力が生成されます(loadHTML警告は省略されます):

[
                    クライアントID:




                    パスワード:

cURL オプションの設定に関する詳細情報:

于 2012-07-14T04:30:21.293 に答える