Есть несколько проблем с вашей функцией (в ваших preg_match_all
и preg_replace
).Кроме того, вам нужно быть более изощренным с точки зрения соответствия class
на теге <img>
.В целом, было бы лучше использовать встроенный класс DOMDocument, как предлагает другой ответ.Если вы хотите продолжать использовать регулярные выражения, эта функция должна исправить возникшие проблемы.
function to_je_to($content){
preg_match_all('/<img[^>]+>/', $content, $images);
if(!is_null($images)){
foreach($images[0] as $index => $value){
if(preg_match('/class="[^"]*(?<=["\s])size-full[\s"]/', $value)){
$new_img = str_replace('<img', '<img data-example', $value);
$content = preg_replace('/' . preg_quote($value, '/') . '/', $new_img, $content);
}
}
}
return $content; // return no difference
}
echo to_je_to($sadrzaj);
Демонстрация на 3v4l.org