我已经寻找解决方案,但我迷路了。我必须删除或替换<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和脚本标记。
有什么想法吗?
答案 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
对象。