Why bother with re-creating the node? Why not just replace the node? (If I understand what you’re trying to do)…
if($spancount == 0){
$element = $doc->createElement('span');
$element->setAttribute('style','color:#ffffff;');
$tag->parentNode->replaceChild($element, $tag);
$element->apendChild($tag);
}
Edit Whoops, it looks like you’re trying to wrap everything under $tag
in the span… Try this instead:
if($spancount == 0){
$element = $doc->createElement('span');
$element->setAttribute('style','color:#ffffff;');
foreach ($tag->childNodes as $child) {
$tag->removeChild($child);
$element->appendChild($child);
}
$tag->appendChild($child);
}
Edit2 Based on your results, it looks like that foreach is not completing because of the node removal… Try replacing the foreach with this:
while ($tag->childNodes->length > 0) {
$child = $tag->childNodes->item(0);
$tag->removeChild($child);
$element->appendChild($child);
}