Сначала создайте новый массив с поиском полей, завернутая в фигурных скобках:
$searchArray = array_map(function($value) {
return "{{" . $value . "}}";
}, array_keys($array));
Теперь у вас есть массив с токенами вы ищете, и у вас уже есть массив значений, которые вы хотите заменить токенами.
Так просто сделать простой str_replace
:
echo str_replace($searchArray, $array, $str);
Рабочий пример: https://3v4l.org/8tPZt
Вот аккуратный маленькая функция, вместе взятые:
function fillTemplate($templateString, array $searchReplaceArray) {
return str_replace(
array_map(function($value) { return "{{" . $value . "}}"; }, array_keys($searchReplaceArray)),
$searchReplaceArray,
$templateString
);
}
Теперь вы можете назвать это как это:
echo fillTemplate(
"Hello {{name}} welcome to {{company_name}}",
['name' => 'max', 'company_name' => 'Stack Exchange']
);
// Hello max welcome to Stack Exchange
Пример: https://3v4l.org/rh0KX
это работа для preg_replace_callback – splash58
спасибо за Ваш ответ вы можете дать мне пример – user3736833
Если ваша цель была печать, а не получать строку, попробуйте 'эхо«Hello». $ Имя.« Добро пожаловать на сайт». $ Компании ; ' –