<?php
 
$content = <<<EOD
<div id="foo">
	<p>...</p>
</div>

<pre class="bar">
	<code>
		echo "Hello, World!";
	</code>
</pre>

<p id="third">Hello.</p>

Текстовый узел.

<table id="fourth">
	<tbody>
		Content
	</tbody>
</table>

Ещё один текстовый узел.
EOD;

$dom = new DOMDocument( '1.0', 'UTF-8' );
$dom->loadHTML( $content );
$xpath = new DOMXPath( $dom );
$tags = $xpath->query('/html/body/* | /html/body/text()');
$nodes = [];
foreach( $tags as $node ) {
	$tmp = utf8_decode(trim($node->c14n()));
	if(! empty($tmp)) {
		$nodes[] = $tmp;
	}
}
print_r($nodes);