Чтобы заменить все вхождения текста в строке PHP значениями из ассоциативного массива, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: str_replace() с array_map()
$string = "Hello {name}, welcome to {location}!";
$values = array(
'name' => 'John',
'location' => 'Paris'
);
$result = str_replace(array_map(function($key) {
return '{' . $key . '}';
}, array_keys($values)), array_values($values), $string);
echo $result; // Output: Hello John, welcome to Paris!
Метод 2: preg_replace_callback()
$string = "Hello {name}, welcome to {location}!";
$values = array(
'name' => 'John',
'location' => 'Paris'
);
$result = preg_replace_callback('/\{(.+?)\}/', function($matches) use ($values) {
$key = $matches[1];
return isset($values[$key]) ? $values[$key] : $matches[0];
}, $string);
echo $result; // Output: Hello John, welcome to Paris!
Метод 3: пользовательская функция с помощью strtr()
function replaceText($string, $values) {
$search = array();
$replace = array();
foreach ($values as $key => $value) {
$search[] = '{' . $key . '}';
$replace[] = $value;
}
return strtr($string, array_combine($search, $replace));
}
$string = "Hello {name}, welcome to {location}!";
$values = array(
'name' => 'John',
'location' => 'Paris'
);
$result = replaceText($string, $values);
echo $result; // Output: Hello John, welcome to Paris!