1

私はDOMドキュメントが初めてです..私はこのhtmlを持っています:

    <tr class="calendar_row" data-eventid="39657">
        <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 9</div></td>
        <td class="alt1 smallfont" align="center">3:34am</td>
        <td class="alt1 smallfont" align="center">USD</td>
    </tr>

    <tr class="calendar_row" data-eventid="39658">
        <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 10</div></td>
        <td class="alt1 smallfont" align="center">5:14am</td>
        <td class="alt1 smallfont" align="center">EUR</td>
    </tr>

このコードを使用して、最初に tr 内のコンテンツを取得しようとしています:

    $ret = array();
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    //$doc->saveHTMLFile('textbox.php');

    $text = $doc->getElementsByTagName('tr');
    foreach ($text as $tag){
        $ret[] = $doc->saveHtml($tag); 
        echo $doc->saveHtml($tag); 
    }

エコーされる値がドキュメント全体であり、tr 内の値ではない理由がわかりません..

次に、5:14 AM、EUR などの td タグの間の値も取得したいと思います。しかし、私はそれを行う方法がわかりません。

初心者の質問を許してください..

よろしくお願いします

4

2 に答える 2

3
$doc = new DOMDocument();
$doc ->loadHTML("$html");
$tables = $doc->getElementsByTagName('table');
$table = $tables->item(0);//takes the first table in dom

foreach ($table->childNodes as $td) {
  if ($td->nodeName == 'td') {
    echo $td->nodeValue, "\n";
  }
}
于 2012-12-17T04:36:08.460 に答える
1

要素を渡すと、saveHtmlその要素の innerHTML ではなく、要素の outerHTML が生成されるため、そのタグ属性とそのすべてのコンテンツを取得します。もちろん、 PHP>=5.3.6 を実行している必要があります。

$td->firstChild->nodeValue;td 間の値は、問題の によって、または$td->textContent;どこに$tdあるかによって取得できます<td>

于 2012-12-17T04:32:32.827 に答える