public function contentsUnwrap() { foreach ($this->stack(1) as $node) { if (!$node->parentNode) { continue; } $childNodes = array(); // any modification in DOM tree breaks childNodes iteration, so cache them first foreach ($node->childNodes as $chNode) { $childNodes[] = $chNode; } foreach ($childNodes as $chNode) { // $node->parentNode->appendChild($chNode); $node->parentNode->insertBefore($chNode, $node); } $node->parentNode->removeChild($node); } return $this; }