Это регулярное выражение соответствует вашему шаблону:
(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>
Я протестировал его на нескольких строках Это будет работать на:
<div class="anything">
<img class="blah" src="anything" alt="blah">
</div>
, где вы можете заменить строки "бла" и "что угодно" на что угодно.
Кроме того, различные \ W * в регулярном выражении допускают различный интервал от строки к строке.
Вы сказали, что хотите сделать это на PHP.
Это удалит все сопоставленные шаблоны со страницы, хранящейся в переменной $ my_html.
$my_html=preg_replace('%(?s)<div class="[^"]*">\W*<img\W*class="[^"]*"\W*src="[^"]*"\W*alt="[^"]*">\W*</div>%m', '', $my_html);
Я думаю, это то, что вы искали?