Все верно, результат php кода в дальнейшем исполняется как шаблон, поэтому такие макросы как {$var} вызывают ошибки.
Как вариант, можно заменить доллар и фигурные скобки на html аналоги.
$name = str_replace( ['{', '}', '$'], ['{', '}', '$'], htmlspecialchars( $name ) );