使用PHP Simple HTML DOM解析器查找和删除HTML标签

6
这是我正在使用的代码:
include 'simple_html_dom.php';
$html = file_get_html('index.html');
echo $html->find('tr', 15);

这将找到表格的第15行。我想做的是完全删除该行。 我已经尝试过:
$html->find('tr', 15)=null; 

但是这似乎行不通。我已经尝试在SimpleHTMLDom文档中查找信息,但它没有提供太多信息。
3个回答

1
简单的HTML DOM似乎不允许删除操作。请尝试使用以下方法:
$html = new DOMDocument();
$html->loadHTMLFile('index.html');
$element = $html->getElementsByTagName('tr')->item(15);
$element->parentNode->removeChild($element);

使用您的代码后,脚本停止响应。是否可以使用phpquery或其他库来解决这个问题? - sukhjit dhot
抱歉,我已经将 $html = new DOMDocument; 改为 $html = new DOMDocument();,并将 load 改为 loadHTMLFile。这应该可以正常工作,我已经多次使用过这种方法。 - juanra
你好朋友,这个还是没有移除任何东西,如果可能的话,你能给我展示一个可行的例子吗? - sukhjit dhot

0

这里有一个可工作的示例(在Linux中可以直接使用,但也很容易适应其他环境)。

文件dom_test.php

#!/usr/bin/php
<?php
    $html = new DOMDocument();
    $html->loadHTMLFile('index.html');
    $element = $html->getElementsByTagName('tr')->item(1);
    $element->parentNode->removeChild($element);

    echo $html->saveHTML();
?>

index.html 文件包含:

<html>
    <head></head>
    <body>
        <table>
            <tr><td> hi </td><td>there</td></tr>
            <tr>
                <td> HELLO </td>
                <td> there </td>
            </tr>
            <tr><td> hi </td><td>there</td></tr>
        </table>
    </body>
</html>

将两个文件放在同一个目录中,并在控制台中执行以下命令:
php dom_test.php

输出将不包括“HELLO there”这一行。

希望能对您有所帮助。


0
你可以使用simple_html_dom来实现这个,只需将outertext设置为innertext的值即可。
foreach($html->find('div') as $div) {
    $div->outertext = $div->innertext;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接