Есть строка
text :pattern1 text :pattern2 text :pattern3
Есть два массива
$array1=array('/:pattern1/', '/:pattern2/', '/:pattern3/');
$array2=array(':pattern2', ':pattern3', 'foo');
Нужно по порядку заменить элементы первого массива на второй, т.б. должна получиться строка
text :pattern2 text :pattern3 text foo
Пробовал вариант
$str='text :pattern1 text :pattern2 text :pattern3';
$array1=array('/:pattern1/', '/:pattern2/', '/:pattern3/');
$array2=array(':pattern2', ':pattern3', 'foo');
echo preg_replace($array1, $array2, $str, 1);
Результат таков
text foo text :pattern2 text :pattern3
Т.е. функция производит замену последовательно в три этапа
:pattern1 => :pattern2 = 'text :pattern2 text :pattern2 text :pattern3'
:pattern2 => :pattern3 = 'text :pattern3 text :pattern2 text :pattern3'
:pattern3 => foo = 'text foo text :pattern2 text :pattern3'
Могу, конечно, организовать замены значений на рандомные хеши, используя вспомогательные массивы и циклы, но хотелось бы посмотреть на ваши варианты