Php解析HTMLDOM并计算特定行数

Php解析HTMLDOM并计算特定行数,php,parsing,dom,preg-match,preg-match-all,Php,Parsing,Dom,Preg Match,Preg Match All,我正在使用“简单php DOM解析器””来解析html表并计算其行数 我用下面的代码计算其中的所有行(tr): $rows = $table->find('.trClass'); $count = count($rows); echo $count; 我正确地得到了表中所有行的数量 现在,我只想计算包含特定td(带有特定字符串)的行数我们可以假设我只想计算具有此td的行: <td class="tdClass" align="center" nowrap="">TARGET

我正在使用“简单php DOM解析器””来解析html表并计算其行数

我用下面的代码计算其中的所有行(tr):

$rows = $table->find('.trClass');
$count = count($rows);
echo $count;
我正确地得到了表中所有行的数量

现在,我只想计算包含特定td(带有特定字符串)的行数
我们可以假设我只想计算具有此td的行:

<td class="tdClass" align="center" nowrap="">TARGET STRING</td>
目标字符串
如何修改第一个代码以匹配此范围?

我试着使用“preg_match”或“preg_match_all”,但我没有太多的经验,所以我错过了正确的语法

非常感谢您的帮助

那么:

<?php
$targetString = 'TARGET STRING';
$rows = $table->find('.trClass');

$count = 0;
foreach($rows as $row) {
    foreach($row->find('td') as $td) {
        if ($td->innertext === $targetString) {
            $count++;
            break;
        }
    }
}
怎么样:

<?php
$targetString = 'TARGET STRING';
$rows = $table->find('.trClass');

$count = 0;
foreach($rows as $row) {
    foreach($row->find('td') as $td) {
        if ($td->innertext === $targetString) {
            $count++;
            break;
        }
    }
}

这种方法中的一个小错误,如果一个TR有多个带有目标字符串的TD,那么您的计数将是错误的;)。为了回答您的疑问,每个匹配行中只能包含一次目标字符串(匹配行中只能包含一个TD的目标字符串)。这种方法存在一个小错误,如果TR中有多个TD与目标字符串,则您的计数将是错误的;)。为了回答您的疑问,每个匹配行只能包含一次目标字符串(匹配行只能包含一个TD的目标字符串),非常感谢,但是代码中显示了一个错误:“语法错误,意外的“(”,应为T_字符串或T_变量或“{”或“$”in”,将“foreach($row->”('TD')称为$TD){”行..好的,我找到了错误的解决方案(你错过了“查找”),现在它工作得很好!非常感谢!!!是的,很抱歉,我错过了那个。复制粘贴显然出了问题:)。现在也在代码中修复了它。别担心,再次感谢。现在我面临着一个更大的挑战。你可以在这里找到新问题:好的,我来看看。实际上,这不是一个更大的挑战。非常感谢,但代码中显示了一个错误:“语法错误,意外”(,应为T_字符串或T_变量或“{”或“$”,将“foreach($row->)('td')指为$td){”行。好的,我找到了错误的解决方案(您错过了“find”),现在它工作得很好!非常感谢!!!是的,很抱歉,我错过了那一行。复制粘贴显然出了问题:).现在也在代码中修复了它。别担心,再次感谢。现在我面临着一个更大的挑战。你可以在这里找到新问题:好的,我来看看。实际上,这不是一个更大的挑战。