0

我如何只剪掉第一组<tr class="ismResult"><tr class="ismFixtureSummary">而不是第二组?

我希望只删除前两个<tr>标签和内容。有没有办法将这两个都设置为变量,例如$Result?我希望将 html 保留为其中的一部分。

<table>
    <tbody>
        <tr class="ismResult">
            <td>2-0</td>
        </tr>

        <tr class="ismFixtureSummary">
            <td>Player1</td>
            <td>Player2</td>
        </tr>

         <tr class="ismResult">
            <td>1-1</td>
        </tr>

        <tr class="ismFixtureSummary">
            <td>Player3</td>
            <td>Player4</td>
        </tr>
    </tbody>
</table>

我试过的:

include('simple_html_dom.php');
$url = 'http://www.test.com';
$html = file_get_html($url);

$FullTable = $html->find('table');

foreach($FullTable->find('tr[class=ismResult]') as $Heading)
    {
    echo $Heading;

    foreach($FullTable->find('tr[class=ismFixtureSummary]') as $Summary)    
    {
        echo $Summary;
    }
    }

这不起作用,因为它将 all 的内容发布<tr class="ismFixtureSummary">到 each中<tr class="ismResult">。我想把它们剪成一对。

谢谢你提供的所有帮助。

4

2 回答 2

0

我会使用 XPATH 解决这个问题

$xpath = new DOMXPath($html);

$ismResult = $xpath->query("//tr[@class='ismResult']/td");
$ismFixtureSummary= $xpath->query("//tr[@class='ismFixtureSummary']/td");

echo $ismResult->item(0)->nodeValue;
echo $ismFixtureSummary->item(0)->nodeValue;

您可以在此处阅读有关 xpath 的更多信息。 http://phpmaster.com/php-dom-using-xpath/

于 2012-11-01T04:44:11.363 回答
0

只需将 find 操作的结果设置为两个单独的数组,然后执行一个 for 循环并回显您要查找的结果。

include('simple_html_dom.php');
$url = 'http://www.test.com';
$html = file_get_html($url);

$FullTable = $html->find('table');

$headings = $FullTable->find('tr[class=ismResult]');
$summaries = $FullTable->find('tr[class=ismFixtureSummary]');

for ($i = 0; $i < count($headings); $i++;) {
    echo $headings[$i] . $summaries[$i];
}
于 2012-11-01T04:46:14.503 回答