无法使用Simple HTML DOM删除特定信息

时间:2012-11-01 04:29:33

标签: php html simple-html-dom

如何仅删除此中的第一个<tr class="ismResult"><tr class="ismFixtureSummary">,而不是第二个?{/ p>

我希望只删除前两个<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;
    }
    }

这不起作用,因为它会将所有<tr class="ismFixtureSummary">的内容发布到每个<tr class="ismResult">中。我试图将它们剪成一对。

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

只需将查找操作的结果设置为两个单独的数组,然后只需执行一个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];
}