public function wrapInner($markup) { $data = $this->prepareInsert($markup); // No data? Short circuit. if (empty($data)) { return $this; } foreach ($this->matches as $m) { if ($data instanceof \DOMDocumentFragment) { $wrapper = $data->firstChild->cloneNode(true); } else { $wrapper = $data->cloneNode(true); } if ($wrapper->hasChildNodes()) { $deepest = $this->deepestNode($wrapper); // FIXME: ??? $bottom = $deepest[0]; } else { $bottom = $wrapper; } if ($m->hasChildNodes()) { while ($m->firstChild) { $kid = $m->removeChild($m->firstChild); $bottom->appendChild($kid); } } $m->appendChild($wrapper); } return $this; }