Методы PHP для замены текста в строке значениями ассоциативного массива

Чтобы заменить все вхождения текста в строке 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!