我如何获得具有特定类的 td nodeValue?

Posted

技术标签:

【中文标题】我如何获得具有特定类的 td nodeValue?【英文标题】:How i can get td nodeValue with specific class? 【发布时间】:2014-01-14 08:21:51 【问题描述】:

我有以下 html 表:

<table>
    <tr>
        <td><img src="name0.gif"  /></td>
        <td <img src="name1.gif"  /></td>
        <td <img src="name2.gif"  /></td>
        <td <img src="name3.gif"  /></td>
        <td <img src="name4.gif"  /></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??

我只知道 get all td from basic form:

$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>";

【问题讨论】:

【参考方案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>";

【讨论】:

【参考方案2】:

使用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;

【讨论】:

也感谢您的回答!我尝试了第一个答案并解决了它。

以上是关于我如何获得具有特定类的 td nodeValue?的主要内容,如果未能解决你的问题,请参考以下文章

如何选择具有“foo”类的 td?

使用 JQuery 选择具有特定类的特定行的子项

js中的text / value / nodeValue各特性(方法)有啥区别??

如何使用 Selenium 获取具有特定内容的 td 表? [复制]

如何使用 CSS 获得特定数字的孩子?

如何使用 XSL 在 XML 中的特定 td 中保留新行和空白