2016-04-24 1 views
0

Я искал решение, но я потерян. Мне нужно удалить или заменить пустое все между <tr> тегами. Я загружаю html-файл, который содержит много тегов <tr>, моя цель - удалить <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> 

Я использую Simple HTML DOM, я уже пытался с $html->find('tr[id=tr_id]), но не знаю, чтобы заменить все, в том числе между дивы и теги сценария.
Любые идеи?

ответ

0

Чтобы удалить саму TR элемент с помощью DOM, использовать removeChild метод родительского узла:

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

Чтобы удалить содержимое элемента, либо установить его свойство textContent пустая строка '' (PHP   5.6 .1+) или удалить все дочерние узлы один за другим с использованием метода элемента removeChild() в цикле, e. & Thinsp; g .:

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

SimpleXMLElement объект может быть преобразован в DOMElement объект с использованием функции dom_import_simplexml().

+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

Пробовал, но без успеха с -> innertext – mihalp

+0

Добавьте настоящий HTML-код на свой вопрос. Код в моем ответе проверяется как работающий (также в вашем примере HTML). – fusion3k

+0

Я добавил фактический HTML-код. Сори для длинных идентификаторов и классов. – mihalp

Смежные вопросы