Всем привет!
С помощью функции
preg_replace_callback в тексте ищутся BB коды изображений. В BB коде хранятся не ссылки, а имена изображений, поэтому я передаю массив объектов картинок в callback функцию с помощью
use. Совпадения ищутся в тексте и если совпадение не найдено, считается, что изображение не было вставлено в текст и его нужно отобразить после текста. Поэтому из callback функции нужно как-то вернуть во внешний код данные о изображениях которые небыли найдены, но как это сделать я никак не пойму. Пните в нужную сторону плз.
$unused_image = [];
foreach ($images as $key => $image){
$text = preg_replace_callback("#\[IMG=?\]?([^\[\]]+)\]?(?:\[\/IMG\])?#is", function($match) use($image){
if($image instanceof ImageEntity){
if($match[1] == $image->getName()){
$url = $image->getUrl();
return '<p><figure><img src="'.$url.'"></figure>';
}
}
$unused_image[] = $image; // внешняя переменная никак не изменяется, даже если ставлю global
return '';
}, $text);
}