<?php
header("Content-Type: text/plain; charset=utf-8");
?> 
<?php

mb_internal_encoding("UTF-8");
$text           = <<<TEXT
       <b><!-- <i> это комментарий --><div class="1"><x это битый тег и он не считается <r><a><c><eee><ff><!-- распознается ли? -->

<!-- 
а это комментарий а не тег <tag> 
-->


TEXT;
$commentPattern = "/(<!--)(\\s)*.*?(\\s)*(-->)/u";
$txt            = preg_replace($commentPattern, '', $text);
$pattern        = "/(<([\w]+)[^<]*>)/";
preg_match_all($pattern, $txt, $new, PREG_SET_ORDER);
foreach ($new as $key => $value) {
    echo $new[$key][2] . "\n";
}
