0
<table class="mainTable" cellpadding="0" cellspacing="0" align="center">
    <tr>
        <td class="day">test 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="91" class="widgets c91">data 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="109" class="widgets c109">data 2</td>
        <td data-info="" class=" c"></td>
        <td data-info="126" class="widgets c126">data 3</td>
    </tr>
    <tr>
        <td class="day">test 2</td>
        <td data-info="83" class="widgets c83">data 4<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="100" class="widgets c100">data 5<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="118" class="widgets c118">data 6<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
    </tr>
    <tr>
        <td class="day">test 3</td>
        <td data-info="84" class="widgets c84">data 7</td>
        <td data-info="92" class="widgets c92">data 8</td>
        <td data-info="101" class="widgets c101">data 9</td>
        <td data-info="110" class="widgets c110">data 10</td>
        <td data-info="119" class="widgets c119">data 11</td>
        <td data-info="127" class="widgets c127">data 12</td>
    </tr>
</table>

我正在使用简单的 html dom 生成一个包含表中项目的数组。我希望能够识别td元素是否具有 div 类“三角形”并将其输出到数组。

4

3 回答 3

1

这是一个您可以尝试的工作示例:

<?php
$text = '<table class="mainTable" cellpadding="0" cellspacing="0" align="center">
    <tr>
        <td class="day">test 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="91" class="widgets c91">data 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="109" class="widgets c109">data 2</td>
        <td data-info="" class=" c"></td>
        <td data-info="126" class="widgets c126">data 3</td>
    </tr>
    <tr>
        <td class="day">test 2</td>
        <td data-info="83" class="widgets c83">data 4<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="100" class="widgets c100">data 5<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="118" class="widgets c118">data 6<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
    </tr>
    <tr>
        <td class="day">test 3</td>
        <td data-info="84" class="widgets c84">data 7</td>
        <td data-info="92" class="widgets c92">data 8</td>
        <td data-info="101" class="widgets c101">data 9</td>
        <td data-info="110" class="widgets c110">data 10</td>
        <td data-info="119" class="widgets c119">data 11</td>
        <td data-info="127" class="widgets c127">data 12</td>
    </tr>
</table>';

echo  "<div>Original Text: <xmp>$text</xmp></div>";

$html = str_get_html($text);

$divArray = $html->find('div');

// if find exists
if ($divArray) {

  echo '<br>Find function found '. count($divArray) . ' results: ';

  foreach($divArray as $key=>$div){
    echo '<br>'.$key . ': ' . $div->tag . ' with class = ' . $div->class;
  }
}
else
  echo "Find() fails !";
?>

由于您的输入 html 仅包含带有 class 的 div 标签triangle,因此您可以搜索divonly 或带有 class 的 div triangle...

但是,如果您有更多带有其他类或没有任何类的 div 标签,那么您绝对必须搜索div.triangle才能获得正确的结果。

有关更多详细信息,请参阅:

于 2013-08-15T12:26:58.140 回答
1

好吧,您可以find在迭代的元素中调用该方法。这是一个简单的例子。

foreach($html->find('td') as $element) {
    if ($element->find('div')) {
        echo "found div";
    }
}
于 2013-08-15T07:21:59.780 回答
1

在浏览 http://simplehtmldom.sourceforge.net/manual.htm上的 Simple DOM Parser 的文档时,我发现一个简单的方法来查找所有包含 div 类为“triangle”的 td,如下所示:

foreach($html->find('div.triangle') as $element){
   echo $element->parent() . '<br>';
}
于 2013-08-15T07:29:41.970 回答