$re = '/[\r|\n|^<]*(<a([^*>]+>)|<\/a>)/';
$str = 'juabsdfsadfsdfsf<a href=""><h1></h1></a> sdfsdfsdf <h2>sdfsdfs</h2> <div class=""><a href=""></a><div class="block">
<a href="/">
<div class="divInside"></div>
<img src="/bla" /><div class="block">
<a href="/">
<div class="divInside"></div>
<img src="/bla" />
<p>Parargraph<div class="block">
<a href="/">
<div class="divInside"></div>
<img src="/bla" />
<p>Parargraph</p>
</a>
</div></p>
</a>
</div>
<p>Parargraph</p>
</a>
</div>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php