2016-04-24 14 views
0

Ich habe nach Lösung gesucht, aber ich bin verloren. Ich muss alles zwischen <tr> Tags entfernen oder ersetzen. Ich lade HTML-Datei, die viele <tr> Tags enthält, ist mein Ziel, <tr> mit bestimmten ID zu entfernen. Mein <tr> sieht wie folgt aus:HTML DOM entfernen/ersetzen zwischen <tr> und</tr> Tags

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

I Einfache HTML DOM bin, habe ich schon mit $html->find('tr[id=tr_id]) versucht, aber nicht wissen, was zwischen zu ersetzen, einschließlich divs und Script-Elementen.
Irgendwelche Ideen?

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

an das Element des Inhalt entweder gesetzt seine textContent Eigenschaft auf leere Zeichenfolge '' (PHP   5.6 zu entfernen:

Antwort

0

Um das TR Element selbst über DOM, verwenden, um die removeChild Methode des übergeordneten Knotens zu entfernen .1+) oder entfernen Sie alle untergeordneten Knoten nacheinander mit der Methode des Elements in einer Schleife, zB:

SimpleXMLElement Objekt kann mit der Funktion dom_import_simplexml() in DOMElement Objekt konvertiert werden.

+0

Jeder spezifikationskonforme Parser fügt keine element child in ein "tr" -Element ein, außer für "td" und "th" Elemente; Alles andere wird vor dem 'table' Element gefördert. Also 'html5lib-php' wird dort kein' div' einfügen. – gsnedders

+0

@gsnedders Fwiw, Ihr Kommentar ist wahrscheinlich nicht mehr relevant. –

1

Verwenden ->innertext Eigenschaft:

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

Ausgang:

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

Oder:

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

Ausgang:

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

Versucht, aber kein Erfolg mit -> inertext – mihalp

+0

Fügen Sie Ihrer Frage echten HTML hinzu. Code in meiner Antwort wird als funktionierend getestet (auch in Ihrem HTML-Beispiel). – fusion3k

+0

Ich habe eigentlichen HTML-Code hinzugefügt. Sory für lange IDs und Klassen. – mihalp

Verwandte Themen