HTML DOM删除/替换和标签之间

时间:2016-04-24 16:51:20

标签: php simple-html-dom

我已经寻找解决方案,但我迷路了。我必须删除或替换<tr>标记之间的空白内容。我正在加载包含许多<tr>标记的html文件,我的目标是删除具有特定ID的<tr>。我的<tr>看起来像这样:

<tr id="ctl00_cphMain_DisplayRecords1_RepeaterResults_ctl03_trZSD">
    <td id="ctl00_cphMain_DisplayRecords1_RepeaterResults_ctl03_tdZSD" class="td-zsd footable-visible footable-last-column footable-first-column" colspan="9">
         <div id="divZSDBanners" class="table-banners-zsd clearfix">
              <div>
                  <div class="medium-4 columns zsd-ext-ad">
                     <div>
                        <script type="text/javascript">
                        </script>
                        <script>
                        </script>
                        <div id="ctl00_cphMain_DisplayRecords1_RepeaterResults_ctl03_ctl00_divSpace1" class="adSpacer">
                        </div>
                     </div>
                  </div>
                  <script type="text/javascript">
                  </script>
              </div>
         </div>
    </td>
</tr>

我正在使用简单HTML DOM,我已经尝试使用$html->find('tr[id=tr_id]),但不知道要替换它们之间的所有内容,包括div和脚本标记。
有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用->innertext属性:

$tr = $html->find( 'tr[id=tr_id]', 0 );  // Select first node (0)
$tr->innertext = '';
echo $html->save();

输出:

<tr id="tr_id"></tr>

或者:

$tr->innertext = '<td>New Content</td>';
echo $html->save();

输出:

<tr id="tr_id"><td>New Content</td></tr> 

答案 1 :(得分:0)

要通过DOM删除TR元素本身,请使用其父节点的removeChild方法:

$tr->parentNode->removeChild($tr);

要删除元素的内容,请将其textContent属性设置为空字符串''(PHP 5.6.1+)或使用以下方法逐个删除所有子节点循环中元素的removeChild()方法,例如: G:

while ($tr->lastChild) {
    $tr->removeChild($tr->lastChild);
}
可以使用dom_import_simplexml()函数将

SimpleXMLElement对象转换为DOMElement对象。