preg_match_all () : Неизвестный модификатор ']'

Используя несколько разных шаблонов, но каждый из них придумал эту ошибку – так что случилось?

Самый короткий для диагностики:

$pattern = "<img([^>]*[^/])>"; preg_match_all($pattern, $subject, $matches); 

благодаря

Вам не хватает разделителей регулярных выражений. Пытаться:

 $pattern = "#<img([^>]*[^/])>#i"; 

Единственной косой чертой является разделитель по умолчанию, поэтому символ после него в исходном регулярном выражении находился в сообщении об ошибке. Использование традиционных слэшей в качестве разделителей и экранирование косой черты, которая не является разделителем, будет выглядеть так:

 $pattern = "/<img([^>]*[^\\/])>/";