The most straightforward approach would be to typecast them:
foreach ($nodes as $node) {
$nodearr[] = (string)$node;
}
But as you've already found, DOMElements have no inbuilt definition about what it means to be "converted into a string". Instead I'm guessing you want each node's text content (trimmed of leading and trailing whitespace), skipping any other tags.
foreach($nodes as $node)
{
$nodearr[] = trim($node->textContent);
}
The empty elements would all be empty strings now. Removing those from the array can be done in one statement:
$nonempty = array_filter($nodearr, 'strlen');
Only strings that have a nonzero length will be put into $nonempty.