$re = '/\b(sapien)\b(?!([^<>]*(<img[^>]+>)[^<>]*|[^<>]*)(<\/a|<\/div|>))/i';
$str = '<p>sapien Cras cursus consequat nibh <a href="#">sapien</a>ac vehicula <div class=\'test\'>sapien</div>. Sed erat sapien, condimentum quis risus nec, viverra dignissim nisi. <div>Cras sapien convallis <img src=> erat </div>, erat egestas tincidunt <img src="myimage.jpg" alt="sapien">rutrum, massa enim sagittis ante, sapien.sed pellentesque lorem risus vitae enim. Curabitur hendrerit dolor facilisis <a href="sapien"hhhhhhhhh>sapien</a> dolor malesuada molestie.sapien</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