php - change nodevalue with all childnodes in domelement

one text

Solution:

my solution)

i_text,p_text,a_text,another one_text

$html = '<p><i>i_text</i>,p_text<b>,a_text</b>,another one_text</p>';
$dom = new DOMDocument();
$dom->loadXML($html);
$dom->preserveWhiteSpace = false;
$dom->validateOnParse = true;
$elements = $dom->getElementsByTagName('*');

foreach ($elements as $element) {
    if($element->hasChildnodes()==true && $element->parentNode->nodeName == '#document'){
        foreach($element->childNodes as $element_child){
            $element_child->nodeValue = str_replace('_','_changed_', $element_child->nodeValue);
        }
    }
}
echo ($dom->saveXML());

output

i_changed_text,p_changed_text,a_changed_text,another one_changed_text

Source