Я пытался выполнить это в течение нескольких дней. У меня есть описание в каждом столбце, в котором есть местозаполнители вручную, где я хочу, чтобы соответствующее изображение было заменено. Например:
This is the description shortened...
[image]
[image]
Description starts again with a new paragraph continuing...
Заполнители являются [изображением]. С каждым новым сообщением я загружаю несколько изображений, но каждое сообщение может варьироваться от 1 до 10 изображений, поэтому размещается переменная сумма [image]. У меня есть функция, которая получает все связанные изображения с этим сообщением и подсчитывает, сколько изображений есть.
Вот код, который у меня есть до сих пор, но что не так, для первых двух заполнителей [изображение] он дважды отображает первое связанное изображение, затем цикл и показывает описание снова, на этот раз со вторым изображением, заменяющим оба [image] заполнители.
<?php
foreach ($photos as $picture) {
$count = count($picture);
for($i = 1; $i<= $count; $i++) {
$image = $picture['filename'];
$replace = "[image]";
$image_path = '../../content_management/image_upload/';
$placeholders = array("$replace");
$image_location = array('<a class="fancybox" href="' . $image_path . '' . $image . '" data-fancybox-group="gallery"><img src="' . $image_path . '' . $image . '" /></a>');
$rawstring = $photo_article['description'];
$new_string = $rawstring;
$new_string = str_replace($placeholders, $image_location, $new_string, $i);
echo $new_string;
}
}
?>
А выход:
This is the description shortened...
Image1.jpg
Image1.jpg
Description starts again with a new paragraph continuing...
This is the description shortened...
Image2.jpg
Image2.jpg
Description starts again with a new paragraph continuing...
Ваша проблема, скорее всего, '$ я 'в вызове str_replace должно быть 1. Но использование str_replace в любом случае громоздко. Рассмотрим 'preg_replace_callback'. – mario
Если я возьму $ i из str_replace(); он теперь удваивает выход. Я попытаюсь использовать preg_replace_callback – tunedin