Задача такова: Есть текст с картинками, как найти все картинки в тексте и заменить на соответствующие значения из массива, т.е.: Код (Text): $text = "<body><p>блок текста</p><p>><img src='картинка1'></p><p> блок текста </p><p><img src='картинка2'></p> ….</body>"; $array = array['0'=>'картинка1', '1'=>'картинка2', …]; Последовательность найденной картинки соответствует индексу массива, т.е. Первая найденная картинка текста = $array[0], вторая = $array[1] и т.д. Как найти картинку я знаю, и как заменить одну, НО НЕ ЗНАЮ как работать с блоком текста. Помогите советом. Код (Text): $content = preg_replace("/<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>/is", "<img src='" . $array[$i] . "'>", $content);
Я понимаю, что вопрос не совсем понятен, попробую другими словами: Необходимо найти все картинки в тексте и заменить на какое-то другое значение, причем для каждой картинки свое значение, а не одно значение на все картинки. Вот. Я пробовал использовать preg_replace_callback(), но не получается что-то.
Попробуй еще ) Скорее всего здесь придется использовать глобальные переменные. Что значит "первая найденная картинка текста"?
Это значит - первое найденное соответствие регулярному выражению, и если есть еще совпадения, то в соответствии с порядком (последовательностью) «нахождения» (соответствия), есть второе, третье и т.д. Т.е. как бы это сказать последовательность соответствий.
Все, спасибо, все заработало. Раньше просто не сталкивался с такими задачами. Вот решение: Находим соответствие: Код (Text): $content = preg_replace_callback("/<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>/is", "replaceImg", $content); значение для замены: Код (Text): function replaceImg() { static $i = 0; $string_replase = $_SESSION['path_file'][$i]; $i++; return $string_replase; }