$re = '~<a
\s+
((?:[^\s<>\'"=]+(?:=(?:"[^"]*"|\'[^\']*\'|[^\s\'">]+))?\s+)*)
href=(?|"([^"]*\.(?:jpe?g|png))"|\'([^\']*\.(?:jpe?g|png))\'|([^\s\'">]*\.(?:jpe?g|png))(?=[>\s]))
((?:\s+[^\s<>\'"=]+(?:=(?:"[^"]*"|\'[^\']*\'|[^\s\'">]+))?)*)
\s*>
(.*?)
</a>~misx';
$str = '<p>С этой формы приходят заявки <a href="https://site.com/lack_tech.php">https://site.com/lack_tech.php</a></p>
<p>Или что ты имеешь ввиду?</p>
<div class="attachment_files_message">
<p>Прикреплённые файлы:</p>
<a href="http://site.com/public/uploads/kylticket/2670/Screenshot_1.png" target="_blank">Screenshot_1.png</a>
<a href=http://site.com/public/uploads/kylticket/2670/Screenshot_1.png target="_blank">Screenshot_1.png</a>
<a
target="_blank"
href="http://site.com/public/uploads/kylticket/2670/Screenshot_1.png" >Screenshot_1.png</a>
</div>';
$subst = "<a $1$3 data-fancybox=\"gallery\" href=\"$2\"><img src=\"$2\" alt=\"\" class=\"tmp_class\"></a>";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
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