$re = '/<(a|h1)[^\>]*?>(some)[^\<]*?<\/\1>/mi';
$str = '<p>
<h1>Some header, which I don\'t want to match</h1>
Some text - match it.
<a href="some-file.html">Some link. Don\'t match neither href nor link text.</a>
<span>Some word, which needs to be matched</span>
</p>';
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