Используя несколько разных шаблонов, но каждый из них выдает эту ошибку - так что же не так?
Мой самый короткий диагноз:
$pattern = "<img([^>]*[^/])>"; preg_match_all($pattern, $subject, $matches);
Спасибо
Вам не хватает разделителей регулярных выражений. Попробуйте:
$pattern = "#<img([^>]*[^/])>#i";
Отдельная косая черта является разделителем по умолчанию, поэтому символ после нее в исходном регулярном выражении был в сообщении об ошибке. Использование традиционных косых черт в качестве разделителей и экранирование косой черты, которая не является разделителем, будет выглядеть следующим образом:
$pattern = "/<img([^>]*[^\\/])>/";