Bu fonksiyon, "harita" (ve yerine), benim web uygulama sisteminin bir parçasıdır:
function replace($search, $replace, $mixed)
{
    if (is_string($mixed)) {
        return @str_replace($search, $replace, $mixed);
    } else if (is_array($mixed)) {
        foreach ($mixed as $k => $v) {
            $mixed[$k] = replace($search, $replace, $v);
        }
        return $mixed;
    } else {
        return $mixed;
    }
}
function map($a, $contents, $case_sensitive=false)
{
    if (!is_array($a)) {
        return $contents;
    }
    if (!$case_sensitive) {
        $a = array_change_key_case($a);
    }
    $s = array();
    $r = array();
    foreach ($a as $k => $v) {
        if (is_scalar($v) || empty($v)) {
            $s[] = "{".$k."}";
            $r[] = $v;
        }
    }
    if (!$case_sensitive) {
        $contents = preg_replace_mixed('/{([-_ =,.\/\'"A-Za-z0-9]+)}/ei', "'{'.strtolower('\\1').'}'", $contents);
    }
    return replace($s, $r, $contents);
}
Çok iyi bir iş yok. Parantez değişken isimleri ile herhangi bir dize sağlarsanız, ve hile yok.
Sözdizimi farklı, ama amaçlar için modifiye edilebilir:
$str = map(array('name' => 'Joe'), 'My name is {name}');
Ben% sözdizimi üzerinden tercih.