2016-04-24 14 views
0

私は解決策を探しましたが、私は迷っています。私は<tr>タグの間のすべての空白を取り除くか、または取り替えなければなりません。多くの<tr>タグを含むhtmlファイルをロードしていますが、私の目標は特定のIDを持つ<tr>を削除することです。私<tr>は次のようになります。私はシンプルなHTML DOMを使用してい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->find('tr[id=tr_id])で試してみたが、divタグやスクリプトタグを含め、間のすべてのものを交換するのか分かりません。
アイデア

答えて

0

その親ノードのremoveChild方法使用、DOM介しTR素子自体を削除するには、次のいずれかで、要素の内容を除去し、空の文字列''にそのtextContentプロパティを設定する

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

を(PHP   5.6 .1 +)ループ内の要素のremoveChild()メソッドを使用して、すべての子ノードを1つずつ削除すると、e。&lt; thinsp; g:

SimpleXMLElementオブジェクトはdom_import_simplexml()関数を使用してDOMElementオブジェクトに変換できます。

+0

すべての仕様に準拠するパーサーは、 'td'要素と' th'要素を除いて 'tr'要素に要素子を挿入しません。他のすべては 'table'要素の前にparentedされます。だから '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

試しましたが、成功しませんでした - > innertext – mihalp

+0

質問に実際のHTMLを追加してください。私の答えのコードは、(あなたのHTMLサンプルでも)うまく動作しているかのようにテストされています。 – fusion3k

+0

実際のHTMLコードを追加しました。長いidsとクラスのためのソーリー。 – mihalp

関連する問題