php回显字符串html与php变量,无法打破php字符串

I'm trying to echo a phpstring-message. This php string consists of html and php variables and comes form a database and i can't change that data.

$name = 'John';
$str = '<b>Hi {$name},</b><br/>How are you?';

echo $str;

So i'm trying to replace the php string, but it doesn't work. This is my code:

$str = str_replace('{', '\' . ', $str);                     
$str = str_replace('}', ' . \' ', $str); 

I get: <b>Hi' . $name. ',</b><br/>How are you?

How do i get the string like this?

<b>Hi John,</b><br/>How are you?

Thank you in advance

Just do it like this, you won't be able to replace it with a concatenation:

echo str_replace('{$name}', $name, $str);

EDIT:

If you don't know the name of the variable just use this:

echo preg_replace('/\{(.*?)\}/', $name, $str);

it's already implemented in PHP, you can directly write the variable in double quote like this:

echo "<b>Hi $name,</b><br/>How are you?";

or for some more complex variables:

echo "<b>Hi {$user->name},</b><br/>How are you?";