echo $begrüßung;
Es ging um die Verwendung von str_replace() zur Beseitigung mehrfacher Zeilenumbrüche, also die Reduzierung auf jeweils nur einen Zeilenumbruch in Folge.
Warum willt du dafür unbedingt str_replace() nehmen? Die preg_replace-Lösung ist für diese Aufgabe besser geeignet, da sie mit einer variablen Suchstringlänge umgehen kann, während die Länge des Suchstrings[*] bei str_replace() feststehen muss.
Wenn es unbedingt mit str_replace() sein soll, schlage ich folgenden Zweizeiler vor:
while (strpos($string, "\n\n\n") !== false)
$string = str_replace("\n\n\n", "\n\n", $string);
Bei Reduzierung auf einen Zeilenumbruch muss noch jeweils einmal \n weg.
echo "$verabschiedung $name";
[*] oder der Suchstrings, wenn man ein Array übergibt.