2016-04-24 55 views
0

的解決方案,但我迷路了。我必須刪除或替換空白<tr>標籤之間的所有內容。我正在加載html文件,其中包含許多<tr>標籤,我的目標是用特定的ID刪除<tr>。我<tr>看起來是這樣的:HTML DOM刪除/替換我搜索<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和script標籤。
任何想法?

回答

0

要通過DOM除去TR元件本身,使用它的父節點的removeChild方法:

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

要刪除該元素的內容,無論其textContent屬性設置爲空字符串''(PHP   5.6 。.1+)或使用在一個循環中該元素的removeChild()方法,例如除去所有子節點逐個&thinsp;克。:

while ($tr->lastChild) { 
    $tr->removeChild($tr->lastChild); 
} 

SimpleXMLElement使用dom_import_simplexml()函數可以將對象轉換爲DOMElement對象。

+0

任何符合規範的解析器都不會將任何元素子元素插入'tr'元素,除了'td'和'th'元素;所有其他的東西都會在'table'元素之前得到培養。所以'html5lib-php'不會在那裏放置任何'div'。 – gsnedders

+0

@gsnedders Fwiw,您的評論可能不再相關。 –

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> 
+0

試過但沒有成功 - > innertextxt – mihalp

+0

添加真實的HTML到您的問題。在我的答案中的代碼被測試爲工作(也在您的HTML示例)。 – fusion3k

+0

我添加了實際的HTML代碼。 Sory爲長期IDS和類。 – mihalp