Как найти ближайшее вхождение необходимых символов рядом с нужным ключом?
не нужны тут циклы от слова вообще - достаточно https://www.php.net/manual/ru/function.preg-replac...

если сами не раздуплитесь, пинганите меня завтра.
У вас есть проблема. Вы решили использовать регулярные выражения чтобы её решить. Теперь у вас две проблемы.

$data = array_combine(
    array_map(function($key) { return '{' . $key . '}'; }, array_keys($data)), //Дописываем к ключам фигурные скобки
    array_values($data)
);

echo strtr($string, $data);