1

我有以下 html 表:

<table>
    <tr>
        <td><img src="name0.gif" alt="Name0" /></td>
        <td <img src="name1.gif" alt="Name1" /></td>
        <td <img src="name2.gif" alt="Name2" /></td>
        <td <img src="name3.gif" alt="Name3" /></td>
        <td <img src="name4.gif" alt="Name4" /></td>
    </tr>
    <tr>
        <td class="name_con" >Name0</td>
        <td class="name_con" >Name1</td>
        <td class="name_con" >Name2</td>
        <td class="name_con" >Name3</td>
        <td class="name_con" >Name4</td>
    </tr>
</table>

如何使用 class="name_con" 获取 nodeValues?

我只知道从基本形式获取所有 td :

$dom = new DOMDocument();
$dom->loadHTMLFile($web);
$tables = $dom->getElementsByTagName('td');
//I want create a new table from max to min.
echo "<table>";
//this for is only for testing
for ($i = 9; $i > 0; $i--){
    $table = $tables->item($i);
    echo "<tr><td>".$table->nodeValue."</td></tr>";
}
echo "</table>";
4

2 回答 2

1

使用getAttribute()

for ($i = 9; $i > 0; $i--){
    $table = $tables->item($i);
    if ($table->getAttribute('class') == 'name_con') {
        echo "<tr><td>".$table->nodeValue."</td></tr>\n";
    }
}

这也可以使用XPath表达式:

$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//td[contains(@class,"name_con")]');

echo "<table>";
foreach ($nodes as $node) {
    echo "<tr><td>".$node->nodeValue."</td></tr>\n";
}
echo "</table>";
于 2013-12-26T17:51:06.860 回答
0

使用simplehtmldom

require_once('/simplehtmldom/simple_html_dom.php');
$dom = str_get_html($web);
foreach ($dom->find('td.name_con') as $td) {
   //do the stuff
   $plain = $td->plaintext;
}
于 2013-12-26T17:51:29.133 回答