Как удалить теги div без атрибутов;Сохраняя внутренний HTML? - PullRequest
0 голосов
/ 12 октября 2018

Я хотел бы использовать PHP DOM Document для удаления тегов div, которые не содержат никаких атрибутов.Однако я хотел бы иметь возможность сохранять все внутреннее содержимое HTML.

Пример:

<div>
    <div>
        <div id="test">
            Testing...
        </div><!-- end #test -->
    </div>
</div>

Результат:

<div id="test">
    Testing...
</div><!-- end #test -->

Вот то, о чем я думал, но не могу заставить это сделать то, что я хочу.Этот метод, кажется, удаляет все вместо тегов <div> без атрибутов.

# Remove blank div wraps
if ( $div_tags = $dom->getElementsByTagName( 'div' ) ) {

    $blank_divs = array();

    foreach ( $div_tags as $div_tag ) {

        if ( ! $div_tag->hasAttributes() ) {
            $blank_divs[] = $div_tag;
        }

    }

    if ( ! empty( $blank_divs ) ) {

        foreach ( array_reverse( $blank_divs ) as $blank_div ) {
            $blank_div->parentNode->removeChild( $blank_div );
        }

    }

}

1 Ответ

0 голосов
/ 12 октября 2018

Если вы знаете, сколько итераций вам нужно удалить, вы можете сделать следующее:

var icount = 2; // number of iterations.
for(i=0; i<icount; i++){
    var innerElement = $("#test").contents();
    $("#test").replaceWith(innerElement );
}

Если вы не знаете свой itterstion, вам просто нужно иметь идентифицируемого родителя, такого как этот:

<div id="container">
  <div>
    <div id="test">
        Testing...
    </div><!-- end #test -->
  </div>
</div>

<script>
  var innerElement = $("#test").contents();
  $("#container").replaceWith(innerElement );
</script>
...